Loading...
Loading...
Loading...
Use the Bring Your Own (BYO) SMS feature to connect your existing Short Message Peer-to-Peer (SMPP) account to Genesys Cloud. If your SMS provider supports an SMPP interface, you can integrate it and start sending and receiving SMS messages with customers using Genesys Cloud’s full SMS capabilities.
For BYO SMS pricing, see Genesys Cloud fair use policy.
To set up the BYO SMPP SMS integration, perform these steps:
You can now proceed with the configuring and managing your BYO SMPP SMS integration.
The following sections describe how to configure and then manage your BYO SMPP integrations.
To configure your BYO SMPP integration, perform the following steps:
In the Details tab, enter the name of your integration and add notes. Genesys Cloud recommends that you use meaningful names and notes to identify your SMPP accounts.
Click each tab for more information.
The Configuration tab displays the Properties tab by default. Add relevant details for your SMPP vendor. Define the properties for the following fields:
In the Advanced Configuration section, enter the charset encoding details for your SMPP vendor or the error codes for your SMPP vendor. You can choose to leave this section blank and can use the default configuration.
{
"protocolSpecificCodeMapping": {
"0": {
"genericErrorCode": 0,
"genericErrorCause": "DELIVERED",
"description": "Message delivered"
},
"1" : {
"genericErrorCode": 3,
"genericErrorCause": "MESSAGE_DATA_INVALID",
"description": "Message length is invalid"
},
"2" : {
"genericErrorCode": 3,
"genericErrorCause": "MESSAGE_DATA_INVALID",
"description": "Command length is invalid"
},
"3": {
"genericErrorCode": 3,
"genericErrorCause": "MESSAGE_DATA_INVALID",
"description": "Invalid command ID"
},
"4": {
"genericErrorCode": 2,
"genericErrorCause": "OTHER_TEMPORARY_FAILURE",
"description": "Incorrect carrier status for given command"
},
"5": {
"genericErrorCode": 2,
"genericErrorCause": "OTHER_TEMPORARY_FAILURE",
"description": "Incorrect carrier status for given command"
},
"6": {
"genericErrorCode": 3,
"genericErrorCause": "PRIORITY_INVALID",
"description": "Invalid priority flag"
},
"7": {
"genericErrorCode": 3,
"genericErrorCause": "MESSAGE_DATA_INVALID",
"description": "Invalid registered delivery flag"
},
"8": {
"genericErrorCode": 2,
"genericErrorCause": "OTHER_TEMPORARY_FAILURE",
"description": "Internal system error"
},
"10" : {
"genericErrorCode": 3,
"genericErrorCause": "SOURCE_ADDR_INVALID",
"description": "Invalid source address"
},
"11" : {
"genericErrorCode": 3,
"genericErrorCause": "DEST_ADDR_INVALID",
"description": "Invalid destination address"
},
"12" : {
"genericErrorCode": 3,
"genericErrorCause": "MESSAGE_ID_INVALID",
"description": "Invalid message ID"
},
"13" : {
"genericErrorCode": 2,
"genericErrorCause": "OTHER_TEMPORARY_FAILURE",
"description": "Bind failed"
},
"14" : {
"genericErrorCode": 2,
"genericErrorCause": "AUTHENTICATION_FAILED",
"description": "Invalid password"
},
"15" : {
"genericErrorCode": 2,
"genericErrorCause": "AUTHENTICATION_FAILED",
"description": "Invalid system ID"
},
"17" : {
"genericErrorCode": 3,
"genericErrorCause": "OTHER_PERMANENT_FAILURE",
"description": "ESME_RCANCELFAIL: Cancel SM failed."
},
"19" : {
"genericErrorCode": 3,
"genericErrorCause": "OTHER_PERMANENT_FAILURE",
"description": "ESME_RREPLACEFAIL: Replace SM failed."
},
"20" : {
"genericErrorCode": 2,
"genericErrorCause": "CARRIER_CONGESTED",
"description": "ESME_RMSGQFUL: Message queue full."
},
"21" : {
"genericErrorCode": 3,
"genericErrorCause": "OTHER_PERMANENT_FAILURE",
"description": "ESME_RINVSERTYP: Invalid service type."
},
"51" : {
"genericErrorCode": 3,
"genericErrorCause": "DEST_ADDR_INVALID",
"description": "ESME_RINVNUMDESTS: Invalid number of destinations."
},
"52": {
"genericErrorCode": 3,
"genericErrorCause": "DEST_ADDR_INVALID",
"description": "ESME_RINVLDLNAME: Invalid distribution list name."
},
"64" : {
"genericErrorCode": 3,
"genericErrorCause": "DEST_ADDR_INVALID",
"description": "ESME_RINVDESTFLAG: Destination flag is invalid (submit_multi)."
},
"66": {
"genericErrorCode": 3,
"genericErrorCause": "MESSAGE_DATA_INVALID",
"description": "ESME_RINVSUBREP: Invalid 'submit with replace' request (i.e. submit_sm with replace_if_present_flag set)."
},
"67" : {
"genericErrorCode": 3,
"genericErrorCause": "MESSAGE_DATA_INVALID",
"description": "ESME_RINVESMCLASS: Invalid esm_class field data."
},
"68" : {
"genericErrorCode": 3,
"genericErrorCause": "DEST_ADDR_INVALID",
"description": "ESME_RCNTSUBDL: Cannot submit to distribution list."
},
"69": {
"genericErrorCode": 3,
"genericErrorCause": "OTHER_PERMANENT_FAILURE",
"description": "ESME_RSUBMITFAIL: submit_sm or submit_multi failed."
},
"72" : {
"genericErrorCode": 3,
"genericErrorCause": "SOURCE_ADDR_INVALID",
"description": "ESME_RINVSRCTON: Invalid source address TON."
},
"73" : {
"genericErrorCode": 3,
"genericErrorCause": "SOURCE_ADDR_INVALID",
"description": "ESME_RINVSRCNPI: Invalid source address NPI."
},
"80" : {
"genericErrorCode": 3,
"genericErrorCause": "DEST_ADDR_INVALID",
"description": "ESME_RINVDSTTON: Invalid destination address TON."
},
"81" : {
"genericErrorCode": 3,
"genericErrorCause": "DEST_ADDR_INVALID",
"description": "ESME_RINVDSTNPI: Invalid destination address NPI."
},
"83": {
"genericErrorCode": 3,
"genericErrorCause": "AUTHENTICATION_FAILED",
"description": "ESME_RINVSYSTYP: Invalid system_type field."
},
"84" : {
"genericErrorCode": 3,
"genericErrorCause": "MESSAGE_DATA_INVALID",
"description": "ESME_RINVREPFLAG: Invalid replace_if_present flag."
},
"85" : {
"genericErrorCode": 3,
"genericErrorCause": "MESSAGE_DATA_INVALID",
"description": "ESME_RINVNUMMSGS: Invalid number of messages."
},
"88" : {
"genericErrorCode": 2,
"genericErrorCause": "THROTTLED",
"description": "ESME_RTHROTTLED: Throttling error(ESME has exceeded allowed message limits)."
},
"97" : {
"genericErrorCode": 3,
"genericErrorCause": "TIME_PERIOD_INVALID",
"description": "ESME_RINVSCHED: Invalid scheduled delivery time."
},
"98" : {
"genericErrorCode": 3,
"genericErrorCause": "TIME_PERIOD_INVALID",
"description": "ESME_RINVEXPIRY: Invalid message validity period (expiry time)."
},
"99" : {
"genericErrorCode": 3,
"genericErrorCause": "MESSAGE_DATA_INVALID",
"description": "ESME_RINVDFTMSGID: Predefined message invalid or not found."
},
"100": {
"genericErrorCode": 2,
"genericErrorCause": "OTHER_TEMPORARY_FAILURE",
"description": "ESME_RX_T_APPN: ESME receiver temporary app error code."
},
"101": {
"genericErrorCode": 3,
"genericErrorCause": "OTHER_PERMANENT_FAILURE",
"description": "ESME_RX_P_APPN: ESME receiver permanent app error code."
},
"102": {
"genericErrorCode": 3,
"genericErrorCause": "OTHER_PERMANENT_FAILURE",
"description": "ESME_RX_R_APPN: ESME receiver reject message error code."
},
"103": {
"genericErrorCode": 3,
"genericErrorCause": "OTHER_PERMANENT_FAILURE",
"description": "ESME_RQUERYFAIL: query_sm request failed."
},
"192": {
"genericErrorCode": 3,
"genericErrorCause": "MESSAGE_DATA_INVALID",
"description": "ESME_RINVOPTPARSTREAM: Error in the optional part of the PDU body."
},
"193": {
"genericErrorCode": 3,
"genericErrorCause": "MESSAGE_DATA_INVALID",
"description": "ESME_ROPTPARNOTALLWD: Optional parameter not allowed."
},
"194": {
"genericErrorCode": 3,
"genericErrorCause": "MESSAGE_DATA_INVALID",
"description": "ESME_RINVPARLEN: Invalid parameter length."
},
"195": {
"genericErrorCode": 3,
"genericErrorCause": "MESSAGE_DATA_INVALID",
"description": "ESME_RMISSINGOPTPARAM: Expected optional parameter missing."
},
"196": {
"genericErrorCode": 3,
"genericErrorCause": "MESSAGE_DATA_INVALID",
"description": "ESME_RINVOPTPARAMVAL: Invalid optional parameter value."
},
"254": {
"genericErrorCode": 2,
"genericErrorCause": "CARRIER_DELIVERY_FAILED",
"description": "ESME_RDELIVERYFAILURE: Delivery failure (used for data_sm_resp)."
},
"255": {
"genericErrorCode": 3,
"genericErrorCause": "OTHER_PERMANENT_FAILURE",
"description": "ESME_RUNKNOWNERR: Unknown error."
}
},
"charsets": [
{
"dcs": 0,
"charset": "gsm_0338"
},
{
"dcs": 1,
"charset": "ASCII"
},
{
"dcs": 2,
"charset": "gsm_0338"
},
{
"dcs": 3,
"charset": "ISO-8859-1"
},
{
"dcs": 5,
"charset": "JIS0201"
},
{
"dcs": 6,
"charset": "ISO-8859-5"
},
{
"dcs": 7,
"charset": "ISO-8859-8"
},
{
"dcs": 8,
"charset": "utf-16be"
}
]
}
When you enter a custom advanced configuration, it overrides the default values for the custom error codes, while keeping any defaults that have not been overridden. A custom advanced configuration must be a valid JSON object, and follow the proper schema.
{
"protocolSpecificCodeMapping": {
"0": {
"genericErrorCode": 0,
"genericErrorCause": "DELIVERED",
"description": "Message delivered"
},
"1": {
"genericErrorCode": 3,
"genericErrorCause": "MESSAGE_DATA_INVALID",
"description": "Message length is invalid"
}
},
"charsets": [
{
"dcs": 0,
"charset": "gsm_0338"
},
{
"dcs": 1,
"charset": "ASCII"
}
]
}
The following table describes the two sections in the advanced configuration tab:
| Section name | Description |
|---|---|
| protocolSpecificCodeMapping | Use this section to map your vendor error code to a generic error that Genesys Cloud can further interpret.
|
| charsets | Use this section for an ordered list of charset preferences. You can use this to encode a message before sending it to the vendor SMSC. If a message cannot be encoded with the first charset in the list, the next charset is used, and so on. Examples of charsets are as follows:
|
In the Credentials tab, click Configure. The Configure Credentials dialog box appears. Perform the following steps:
Use this option if your SMS provider requires mutual TLS (mTLS). mTLS is optional. On the Credentials tab, in the SMPP mTLS client certificate section, click Configure. The Configure Credentials dialog box appears. Perform the following steps:
After you complete the fields in your integration, click Save to save your configuration.
If the Save button is not available for selection, then check with your vendor if they maintain an IP allowlist. Add the Genesys Cloud IP addresses from which SMPP bind requests originate to that allowlist. To get a list of the IP addresses, perform the following steps:
Once you have completed all the above steps, you can finally activate your integration. To activate your integration, at the bottom of the page, click Active.
Genesys Cloud tries to establish an SMPP bind using the vendor properties used when configuring the integration. Expect a 15-minute wait time for the bind to be tested and established. If there was unsuccessful binding and connection failures, see the Troubleshooting and Operational Console section in this article. Once you are on the Operational Console, look for the events defined in the Developer Center.
If you encounter problems with integration, you must work directly with your vendor.
Once your integration is ready, you can add your numbers to the SMS number inventory, update, deactivate, or delete your integrations. Click each collapsible for more information.
After you set up your SMPP SMS integration, you are ready to add your numbers to the SMS Number Inventory. You can only add one number at a time.
To add your SMS numbers, perform these steps:
| Default auto response | Description |
|---|---|
| Help keywords | HELP or INFO. |
| Help auto response | Reply STOP to unsubscribe. Msg&Data Rates May Apply. |
| Opt-out keywords | CANCEL, END, QUIT, STOP, UNSUBSCRIBE, STOPALL, REVOKE, or OPTOUT. |
| Opt-out auto response | You have successfully been unsubscribed. You will not receive any more messages from this number. Reply START to resubscribe. |
| Opt-in keywords | START, YES, or UNSTOP. |
| Opt-in auto response | You have successfully been resubscribed to messages from this number. Reply HELP for help. Reply STOP to unsubscribe. Msg&Data Rates May Apply. |
For more information, see Manage your SMS long code number inventory.
You can change your SMPP SMS integration from the Integration dashboard. To update the integration, perform the following steps:
Update your mTLS certificate credentials: You can update your mTLS certificate at any time. Follow the steps in Step 3: Update the Credentials tab, and save your changes. Genesys Cloud applies the new certificate when you reactivate the integration.
To avoid interrupting live traffic, consider testing the certificate and configuration on a separate BYO SMPP integration first. After you verify that the credentials and configuration are correct, disable or delete the test integration, and then update the live integration with the verified mTLS credentials and configuration.
Remove your mTLS certificate credentials: If you no longer want to use mTLS, on the Properties tab, set Enable mTLS to False, and then remove the client certificate credential. When you remove the credential, a confirmation dialog box appears. Choose whether to unlink the credential from the integration and retain it, or unlink and delete the credential. The integration then connects using standard TLS.
You can deactivate your SMPP SMS integration from the Integration Dashboard page. To deactivate your integration, perform the following steps:
When you deactivate the integration:
You can delete your SMPP SMS integration from the Integration Dashboard page. To delete your integration, perform the following steps:
Genesys Cloud does not manage your mTLS client certificate. You are responsible for obtaining, maintaining, and renewing the certificate. Following are your responsibilities and how to rotate your certificate credentials.
Customer responsibilities
If your certificate expires or gets invalid
Genesys Cloud cannot connect if the certificate is expired, not yet valid, unreadable, or protected by a password that does not match the password you provided. In these cases, the integration enters an error state and messaging traffic stops. Genesys Cloud reports the error through an Operational Console event under SMPP connection error event. To restore the connection, update the credential with a valid certificate. If Genesys Cloud reports that the certificate is not yet valid, verify the certificate start date and your system clock settings.
The following table lists common error messages and their descriptions that you might see when integrating your SMPP account with Genesys Cloud.
| Message | Description |
|---|---|
| Please check the Integration for BYO Sender ID. | This message appears when the request is sent to the back-end service and the integration is missing the Sender ID. |
| Please provide the required compliance keywords and messages for your Sender ID. | This message appears when any of the compliance information is missing. Check the fields on the three tabs in the Required interaction dialog box:
|
| Please check your Sender ID type. | This message appears when either the phone number or short code is incorrectly formatted.
|
| Please check your Sender ID country code. | This message appears when the phone number and the country code do not match. |
| A provisioning action is already in progress for this phone number address. | This message appears if you attempt to resubmit a request that is already provisioned. Some numbers take longer to provision. |
| This Phone Number address is not available for provisioning. Please select a different phone number address and try again. | This message appears when the phone number has already been provisioned in another organization. |
You can find events relevant on your BYO SMPP integration in the Operational Console. To navigate to the Operational Console, perform the following steps:
The Operational Console page is displayed.
For more information about the SMS Event Catalog on the operational events that are relevant to BYO SMPP, see the SMS Event Catalog on Developer Center. For more information about using the Operational Console, see Troubleshoot using the Genesys Cloud Operational Console.
If you further encounter problems with integration, you must work directly with your vendor.
Get user feedback about articles.