From d9201f41c8c17b7f943a30680b4b53285483007c Mon Sep 17 00:00:00 2001 From: Aleksandr Soloshenko Date: Thu, 12 Dec 2024 07:01:54 +0700 Subject: [PATCH] [features] add article dedicated to multi-SIM support --- docs/assets/features-sim-rotation.png | Bin 0 -> 15566 bytes docs/faq/general.md | 26 +++++-------- docs/features/multi-sim.md | 51 ++++++++++++++++++++++++++ docs/index.md | 2 +- docs/installation.md | 1 + docs/integration/cli.md | 2 +- mkdocs.yml | 3 +- 7 files changed, 66 insertions(+), 19 deletions(-) create mode 100644 docs/assets/features-sim-rotation.png create mode 100644 docs/features/multi-sim.md diff --git a/docs/assets/features-sim-rotation.png b/docs/assets/features-sim-rotation.png new file mode 100644 index 0000000000000000000000000000000000000000..ef2147ccc92ccce0d5f3b9a529c455a1917a489e GIT binary patch literal 15566 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 A6#xJL literal 0 HcmV?d00001 diff --git a/docs/faq/general.md b/docs/faq/general.md index 0ec5a8b..062c03c 100644 --- a/docs/faq/general.md +++ b/docs/faq/general.md @@ -2,19 +2,7 @@ ## How can I send an SMS using the second SIM card? -To send an SMS using a non-default SIM card, you can specify the SIM card slot number in the `simNumber` field of request. For instance, the following request will send an SMS using the second SIM card: - -```sh -curl -X POST \ - -u : \ - -H 'content-type: application/json' \ - https://api.sms-gate.app/3rdparty/v1/message \ - -d '{ - "message": "Hello from SIM2", - "phoneNumbers": ["79990001234"], - "simNumber": 2 - }' -``` +Please refer to the [Multi-SIM Support](../features/multi-sim.md#webhooks) feature documentation. ## Does the app require power saving mode to be turned off to function without interruptions? @@ -59,17 +47,23 @@ Yes, starting from [1.6.1](https://github.com/capcom6/android-sms-gateway/releas ## How can I avoid mobile operator restrictions? -The application provides two features to help you avoid mobile operator restrictions: +The application provides several features to help you avoid mobile operator restrictions: ### Random delay between messages -You can introduce a random delay between messages by specifying a minimum and maximum delay time. The application will then randomly select a delay within this range for each message sent. This helps to reduce the likelihood of messages being flagged as spam by simulating a more human-like sending pattern. This option is available in the "Messages" section of the device's settings and is named "Delay between messages". +You can introduce a random delay between messages by specifying a minimum and maximum delay time. The application will then randomly select a delay within this range for each message sent. This helps to reduce the likelihood of messages being flagged as spam by simulating a more human-like sending pattern. This option is available in the "Messages" section of the app's settings and is named "Delay between messages". It's important to note that this delay is applied only to individual messages, not for recipients in a single message. When you send a message to multiple recipients, the delay is not applied between each recipient of that message. ### Limiting the number of messages sent per period -The app offers a feature to restrict the number of messages sent within a specified period—be it a minute, hour, or day. You can find this option under the "Limits" section in the device settings. When the limit is reached, the app will pause sending messages until the limit period resets. It's important to note that this feature should not be used for time-sensitive messages, such as sending authorization codes, where delays could cause issues. +The app offers a feature to restrict the number of messages sent within a specified period—be it a minute, hour, or day. You can find this option under the "Limits" section in the "Messages" section of the app's settings. When the limit is reached, the app will pause sending messages until the limit period resets. It's important to note that this feature should not be used for time-sensitive messages, such as sending authorization codes, where delays could cause issues. + +### SIM rotation + +For devices with multiple SIM cards, the application supports SIM rotation to distribute the load across different mobile operators. This feature helps avoid reaching sending limits on a single SIM card and reduces the risk of being flagged for high-volume sending. Please refer to [Multi-SIM Support](../features/multi-sim.md#sim-card-rotation) for more information. + +By combining these features—random delays, message limits, and SIM rotation—you can significantly reduce the risk of triggering mobile operator restrictions while maintaining efficient message delivery. ## How to hide messages on device? diff --git a/docs/features/multi-sim.md b/docs/features/multi-sim.md new file mode 100644 index 0000000..3a765dd --- /dev/null +++ b/docs/features/multi-sim.md @@ -0,0 +1,51 @@ +# Multi-SIM Support + +The app offers the following features to support devices with multiple SIM cards: + +* **Sending API**: Select the specific SIM card for sending SMS messages in your API requests. +* **Webhooks**: Receive SIM card information for incoming messages. +* **Rotation**: Utilize a feature to rotate between multiple SIM cards. + +## Sending API + +To send an SMS using a specific SIM card, provide the SIM card slot number in the `simNumber` field of your request. For example, the following request will send an SMS using the second SIM card: + +```sh +curl -X POST \ + -u : \ + -H 'Content-Type: application/json' \ + https://api.sms-gate.app/3rdparty/v1/message \ + -d '{ + "message": "Hello from SIM2, Dr. Turk!", + "phoneNumbers": ["+19162255887"], + "simNumber": 2 + }' +``` + +## Webhooks + +To receive SMS messages, use the [Webhooks](./webhooks.md) feature. The `sms:received` event payload includes a `simNumber` field to identify which SIM card received the message. + +## SIM Card Rotation + +
+ SIM rotation option +
+ +When the `simNumber` is not specified in the request, you can configure which SIM card will be used to send messages on the device. This option is located in the "Settings" tab under the "Messages" section. + +Available options: + +* **OS Default**: The app will not select any SIM card, delegating this to the default messaging app. +* **Round Robin**: The app will rotate between SIM cards in a round-robin fashion. +* **Random**: The app will select a SIM card at random for each message. + +## Troubleshooting + +If you encounter issues with multi-SIM functionality: + +1. Ensure that your device supports multiple SIM cards and that they are properly installed. +2. Verify that the app has the necessary permissions to access and use all SIM cards. +3. Check the app's logs for any error messages related to SIM card access or usage. + +For further assistance, please contact our [support team](mailto:support@sms-gate.app). diff --git a/docs/index.md b/docs/index.md index fbd902f..6570dcc 100644 --- a/docs/index.md +++ b/docs/index.md @@ -15,7 +15,7 @@ SMS Gateway for Android turns your Android smartphone into an SMS gateway. It's - **Support for Android 5.0 and above:** The application is compatible with Android 5.0 and later versions. - **Message status tracking:** Monitor the status of sent messages in real-time. - **Automatic startup:** The application starts running as soon as your device boots up. -- **Support for multiple SIM cards:** The application supports devices with multiple SIM cards. +- **Support for multiple SIM cards:** The application supports devices with [multiple SIM cards](./features/multi-sim.md). - **Multipart messages:** The application supports sending long messages with auto-partitioning. - **End-to-end encryption:** The application provides end-to-end encryption by encrypting message content and recipients' phone numbers before sending them to the API and decrypting them on the device. - **Message expiration:** The application allows setting an expiration time for messages. Messages will not be sent if they have expired. diff --git a/docs/installation.md b/docs/installation.md index 61781e8..831948f 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -12,6 +12,7 @@ Grant the following permissions for full functionality: - **SEND_SMS**: Essential for sending SMS messages. - **READ_PHONE_STATE**: Allows SIM card selection, if utilized. +- **RECEIVE_SMS**: Required for receiving SMS messages and sending `sms:received` webhook. ## Installing from APK diff --git a/docs/integration/cli.md b/docs/integration/cli.md index 5638187..6b7a493 100644 --- a/docs/integration/cli.md +++ b/docs/integration/cli.md @@ -54,7 +54,7 @@ smsgate send [options] 'Message content' | --------------------------- | ------------------------------------------------------------------------------------------ | ------------- | ----------------------- | | `--id` | Message ID, will be generated if not provided | empty | `zXDYfTmTVf3iMd16zzdBj` | | `--phone`, `--phones`, `-p` | Phone number, can be used multiple times or with comma-separated values | **required** | `+19162255887` | -| `--sim` | SIM card slot number, if empty, the default SIM card will be used | empty | `2` | +| `--sim` | SIM card slot number, if empty, the device's SIM rotation option will be used | empty | `2` | | `--ttl` | Time-to-live (TTL), if empty, the message will not expire
Conflicts with `--validUntil` | empty | `1h30m` | | `--validUntil` | Valid until, if empty, the message will not expire
Conflicts with `--ttl` | empty | `2024-12-31T23:59:59Z` | diff --git a/mkdocs.yml b/mkdocs.yml index 7cbfc15..3018def 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -43,8 +43,9 @@ nav: - API: integration/api.md - Webhooks: features/webhooks.md - Features: - - Logging: features/logging.md + - Multi-SIM Support: features/multi-sim.md - Webhooks: features/webhooks.md + - Logging: features/logging.md - Pricing: pricing.md - Privacy: - Policy: privacy/policy.md