Breadcrumbs

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 Chat

With HybridChat, Channel Manager sends customer requests to HybridChat and sends customer the response receive received from the Hybrid Chat system.

3rd party CRM

For 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 Parameter

Description

Sample 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_GROUPS

whatsapp, 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 Integration

See 

Twilio SMS Integration

for configuration parameters of Twilio SMS integration.

Twilio WhatsApp integration

See 

(3.15 ) Twilio WhatsApp Integration

for configuration parameters of Twilio WhatsApp integration.

360Dialog WhatsApp integration

See 

360Dialog WhatsApp Integration

 for configuration parameters of 360Dialog WhatsApp integration.

SMPP SMS Integration

See 

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 Parameter

Description

Sample 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 Parameter

Description

Sample Value

IS_CRM_UPDATE_DISABLED

If 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_USER

CRM API username for basic auth


CRM_API_PASSWORD

CRM API password



Facebook Integration

Config Parameter

Description

FACEBOOK_APP_SECRET

It 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 Name

Description

Sample 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_PASS

SSL 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.
    Screenshot 2020-12-22 at 8.16.01 AM.png

  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.

    Bash
    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 Name

Description

Sample 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_PROXY

false

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 Name

Description

AMQ_PRIMARY

activemq:61617

AMQ_SECONDARY

activemq:61617

AMQ_TIMEOUT

30000

AMQ_PRIORITY_BACKUP

true

AMQ_RANDOMIZE

false

AMQ_PREFETCH_SIZE

20000

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_PATH

If 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_PHRASE

Trust store password

AMQ_KEY_STORE_PATH

Key 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 Name

Description

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.

JavaScript
{ 
  "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