Channel Manager

Customer Channel Manager (CCM) is the component for connecting customer channels such as Facebook and Viber. See Customer Channels for all supported channels and channel capabilities.

The docker-compose file for Customer Channel Manager is located at <install-dir>/sds/docker-compose-ccm.yml and for HA deployment, docker-compose file is located at <install-dir>/sds/docker-compose-ha-ccm.yml. APIs exposed and consumed by Channel Manager are documented on CCM 3.x APIs.

Webchat is not managed by Channel Manager. Webchat is managed by the Chat server component and Customer Gadget.


Deployment Models

The Channel Manager component is independent deployable component and maybe configured to run in integration with any of the following:

Hybrid ChatWith HybridChat, Channel Manager sends customer requests to HybridChat and sends customer the response receive received from the Hybrid Chat system.
3rd party CRMFor SMS delivery notification to a CRM. 
ECM

DEPRECATED To fetch and send SMS campaign messages from the ECM database. 

After the next major release when HybridChat is properly merged in CIM, ECM will also be merged in CIM and will then be available as a CIM solution component.


Configurations for Hybrid Chat Integration

Config ParameterDescriptionSample Value

CHAT_SOLUTION_URL

Specify CHAT_SOLUTION_URL as the REST API URL of the Hybrid Chat server.

Channel Manager calls this REST API to send a customer message to Hybrid Chat. 

https://<hybridchat-FQDN>/chat
CONSUMER_ENABLE

Should Channel Mananger subscribe to AMQ?

  • true - for HC integration
  • false - for standalone mode


SKILL_GROUPSwhatsapp, premium|facebook, gold|sms, silver|smpp, bronze

An administrator can add a channel name and the respective queue in comma separated values. Multiple channel configurations must be separated by using a PIPE | sign.

If the configured queue is not available in MRE, the chat will be queued to the default queue.


Twilio Integration for SMS and WhatsApp

Twilio SMS IntegrationSee Twilio SMS Integration for configuration parameters of Twilio SMS integration.
Twilio WhatsApp integrationSee Twilio WhatsApp Integration for configuration parameters of Twilio WhatsApp integration.
360Dialog WhatsApp integrationSee 360Dialog WhatsApp Integration for configuration parameters of 360Dialog WhatsApp integration.
SMPP SMS IntegrationSee SMPP SMS Integration for configuration parameters of Twilio SMPP integration.


File Engine Integration

The Hybrid Chat File Engine service that stores files in MinIO. This set of variables define File Engine service discovery parameters.

Config ParameterDescriptionSample Value

FILE_ENGINE_URL

File engine URL to upload files to. This is used by all the internal components. 

https://file-engine:8443

FILE_ENGINE_PUBLIC_URL

For public access, this path is used.https://HC-FQDN/file-engine


CRM Integration

To push delivery notification to a 3rd party CRM via REST. 

Config ParameterDescriptionSample Value
IS_CRM_UPDATE_DISABLEDIf set to false, no sms delivery notification will be sent to third-party app like CRM
CRM_API_URL

Any third party REST API URL and its credentials to push delivery notification

http://<FQDN>/smsDeliveryNotification
CRM_API_USERCRM API username for basic auth
CRM_API_PASSWORDCRM API password

Facebook Integration

Config ParameterDescription
FACEBOOK_APP_SECRETIt is a 32 digit code generated by the Facebook app to avoid any kind of third-party interference. It is generated when the user navigates to the basic setting in the Facebook app and provides his password.

Enabling SSL 

Variable NameDescriptionSample Value
ENABLE_SSL

Specifies if Customer Channel Manager hosts its REST Web-services (Web-hooks for Facebook, Twilio and Viber) over HTTPS or HTTP. Possible values are:

  1. true - enable HTTPS
  2. false - disable HTTPS

SSL_TRUST_STORE_PATH

Path to SSL trust store, if not set then default /app/trustStore.jks will be used that is shipped with the docker image. This will be a path from container and an outside volume should be mounted to this path to have customer-specific trust store containing CA roots for Facebook, Twilio and Viber.

Default volume mounted is /var/lib/expertflow/docker/certificates/smsTrustStore.jks which is mapped to /app/trustStore.jks


SSL_TRUST_STORE_PASSWORD

This is password for the trust store. Default is Expertflow464.
SSL_KEY_ALIAS

This and below 3 variables are used to enable SSL over CCM APIs if the above variable (ENABLE_SSL) is set to true. If ENABLE_SSL is set to true and this and below 3 variables are not set then default certificates keys are used to enable SSL.

localhost
SSL_KEY_STORE_TYPE

Type of the key store.

jks
SSL_KEY_STORE

Keystore name which holds ssl certificate. Key store file should be placed in a directory where compose file runs from. That directory should be mounted to “/app/ssl” is CCM server.
Example:
   volumes:

     - "/root/ssl/:/app/ssl"

SSL Key store path. A volume from the host machine that contains Key store file should be mounted into sms-connector container and this variable will hold mounted path of container.

example: /app/ssl/keyStore/keyStore.jks


SSL_KEY_PASSSSL key password. Default is Expertflow464.


Troubleshooting

The default trust store contains CA roots for Twilio, Facebook and Viber. If a certain CCM deployment is having SSL problems with Facebook, Viber or Twilio connection, follow these steps:

  1. Access HC host machine via ssh
  2. Fetch certificates from remote server using openssl client e.g. for Twilio:

    openssl s_client -showcerts -connect api.twilio.com:443
  3. Grab the root certificate from output and check it with any certificate decoder. Root certificate should be the last certificate in chain of the output returned by openssl client.
  4. If you are unable to perform step # 3, you can paste the root certificate in a certificate.crt file and check it using openssl client e.g.

    openssl x509 -in certificate.crt -text -noout
  5. Check if the certificate authority in HC host machine is different than standard CA of server, if yes, create a certificate.crt file and add it to trust store of CCM. 
  6. Remove CCM container and recreate.


Log Settings

Variable NameDescriptionSample Value
LOG_PATH
expertflow
LOG_LEVEL
info
LOG_FILE_SIZE
5 MB
LOG_BACKUP_FILES
30
LOGS_TOTAL_SIZE
5 GB


Forward Proxy Setup

USE_FORWARD_PROXYfalse
FORWARD_PROXY_HOST
FORWARD_PROXY_PORT
FORWARD_PROXY_USER
FORWARD_PROXY_PASSWORD


ActiveMQ Integration

When integrated with Hybrid Chat, CCM receives messages from HybridChat ActiveMQ queue. 

Variable NameDescription
AMQ_PRIMARYactivemq:61617
AMQ_SECONDARYactivemq:61617
AMQ_TIMEOUT30000
AMQ_PRIORITY_BACKUPtrue
AMQ_RANDOMIZEfalse
AMQ_PREFETCH_SIZE20000
AMQ_SSL_ENABLED

Enables/Disables connection over SSL between CCM and ActiveMQ. Possible values are:

  1. true
  2. false

Default is "false"

AMQ_HOST

ActiveMQ host IP or FQDN. Default is "127.0.0.1" 

AMQ_PORT

ActiveMQ port. Default is "61616" 

AMQ_TRUST_STORE_PATHIf this and below 3 variables are not set then default truststore and keystore will be used
shipped with sms-connector image inside /app directory and names client.ts and client.ks
respectively - /app/client.ts
AMQ_TRUST_STORE_PASS_PHRASETrust store password
AMQ_KEY_STORE_PATHKey Store path - /app/client.ts
AMQ_KEY_STORE_PASS

Key Store password

Any limitations on the integration? For example, the Hybrid Chat solution works only with plain text. What other formats/messages would this integration not support?>

AMQ_OUTBOUND_QUEUE

ActiveMQ queue from where sms-connector will read messages that are submitted by chat server and push them to Twilio for sending

example: outbound-sms

CONSUMER_ENABLED

Specifies to enable/disable CCM ActiveMQ consumer. ActiveMQ consumer can be disabled when CCM is deployed standalone with CIM and does not require integration with HC.

Possible values are:

  1. true 
  2. false 

Default value is true.

PUBLISHER_ENABLE

Specifies to enable/disable CCM ActiveMQ Producer. When Customer Channel Manager is deployed in integration with HC, it does not need to publish SMS delivery reports as of now, so its value should be false. However, when Customer Channel Manager is deployed in integration with Customer Interaction Manager (CIM), this value needs to be true to publish SMS delivery reports to CIM. 

Possible values are:

  1. true
  2. false

Default value is false.

Customer Inactivity Timeout

Enables/Disables customer inactivity time.If customer is inactive for configured timeout , chat will be ended. 

Variable NameDescription
CUSTOMER_INACTIVITY_TIMEOUT

Default value is -1 , but can be set to desired time in seconds e.g., 30

Customer Channel Manager Limitations

  1. CCM inbound API for incoming SMS and delivery-notification API for delivery notifications should be available over the internet.
  2. Only one Twilio account can be used with CCM at a time.


Customer Channel Manager APIs

REST API

Rest APIs documentation can be found here.

ActiveMQ API

CCM consumes and pushes to Twilio messages from queue with name set in AMQ_OUTBOUND_QUEUE variable. The type of messages should be with name SendSms and the content should be in JSON format with the following definition.

{ 
  "number":"<customerNumber>", 
  "text":"<smsText>" , 
  "id":"<messageId>" 
}

where,

  • number - is the phone number where the SMS should be sent 
  • text - SMS text
  • id - (optional) any application assigned identifier for tracking this message in the application