Inbound SMS to open messaging integration

Hey guys,

Can I get some help here please, the use case here is, in genesys our consultant starts an interaction and sends a message to our clients, and clients reply back to genesys, they do real time interaction, and we sync the data back to our database, it works when there's only one contact, but when there're two contacts involved then it won't work, e.g. send a message to contact A about one of his leads (contact B), there's no way to do that unless the consultant manually tag the lead id(as contact B) in the SMS body so later we can capture the lead id and sync back to the db, but the issue here is there's no way we can guarantee the consultants can always remember to tag the lead id.

Our solution is to start the SMS from our CRM by other SMS provider(such as Twilio) so we can capture all the custom attributes(for contact A and B), once our in house SMS webhook got the reply, we can then send the original SMS and the reply as a merged message (or multiple messages) to Genesys queue by making the API call /api/v2/conversations/messages/inbound/open, so consultants can get notified and start working on it, and when consultant replies the SMS in genesys, our genesys outbound webhook will be triggered and call Twilio to send the actual SMS, but again there's no way to pass the custom attributes.

I know it probably doesn't sound like a perfect use case for open messaging, can you please advise if there's another way of doing this or am I missing anything here?

Thanks.
Leo

Hello,

Sorry, several questions - as I am not sure I understand 100% of the flow - in case I can think of something that could help.

I mean I understand there are 2 scenarii:

  1. Scenario 1 - Direct exchange between consultant (Genesys Cloud Contact Center Agent) and client
  2. Scenario 2 - Exchange between consultant (Genesys Cloud Contact Center Agent) and "intermediate" contact about a lead

"in genesys our consultant starts an interaction and sends a message to our clients, and clients reply back to genesys"

  1. First part of your post:
    Do you mean an SMS interaction (Genesys Cloud SMS)?
    How does the consultant/agent generate the interaction?
    -> I mean from where in Genesys Desktop: typing the number and text directly (SMS on behalf of a Queue), selecting an External Contact (stored in Genesys Cloud), from a Script or a custom webapp, ...?
    -> or is the consultant using a CRM with Genesys embedded in it (Embeddable Framework)?
  2. In the CRM and Open Messaging case:
    -> Would the consultant start the interaction from a CRM page? Or is it about interactions generated "automatically" by the CRM backend (as a batch, ...)?
    -> If the consultant is the one starting the interaction, what CRM is it? Integrated with Genesys Cloud (via Embeddable framework) or if not, does this CROM allow to embed and to execute some custom html/javascript?

"we sync the data back to our database"

  1. First part of your post:
    How do you sync back? Or let's say, what criteria do use to identify the lead (lead identifier) the interaction is related to? phone number of the destination, Genesys Cloud external Contact id, participant data/attribute attached to the conversation, external tag on the Genesys Cloud conversation?

In scenario 1 and scenario 2:

  • When the consultant generates the interaction (direct exchange or indirect exchange), does he know what scenario it is (direct or indirect)? Asking this in case there is button in a custom web app, or CRM integrated with Genesys Cloud (using Embeddable framework) or ...

In Scenario 2:

  • Is the "intermediate" contact (i.e. Contact A) a Genesys Cloud user as well (and if yes, does he have a Contact Center Agent role?)?
  • At what stage the lead (i.e. Contact B) is known? I mean a value that will allow to identify and to find the lead id.
    At the beginning already, when the consultant generates the interaction to the "intermediate" contact (i.e. Contact A)?
    Or is it Contact A who would be able to specify it back to Genesys Cloud and the consultant, when he reports back about his exchange with the lead (assuming this exchange does not involve Genesys Cloud)?
  • Do you need the exchange (messages exchanged) between Contact A and lead/Contact B to be reported back to Genesys Cloud - so they get to the consultant (assuming this exchange does not involve Genesys Cloud)?
  • In the Open Messaging case, when would we have the ability to tag it as related to lead/Contact B?
    When the request is generated from your CRM (to the other SMS provider)?
    Would you also know it when your "in house SMS webhook got the reply" - before invoking "/api/v2/conversations/messages/inbound/open"?

Regards,

Hi Jerome,

Thanks for your response - I’ll attempt to clear up your questions the best I can.

"in genesys our consultant starts an interaction and sends a message to our clients, and clients reply back to genesys”

We currently use a very simple A to B conversation using Genesys Cloud. Our Agents start a message in the manner you reference - Start an interaction and send it on behalf of a queue, selecting an external contact as recipient. Our CRM is a custom, in house built platform and we use it externally to Genesys Cloud.
In this scenario we would send the SMS from our CRM manually, this would be individual SMS, not a batch or agentless campaign. As a custom build we are able to embed and execute custom code and update the CRM as necessary.

"we sync the data back to our database”

This may have thrown us off course a bit, we don't currently write back to our DB when sending Genesys SMS. The use case requires it though. In a perfect world when sending a message we could use an external contact id or lead id as a variable pulling directly from External contacts/Contact List. This would enable us to attach the SMS conversation chain to the relevant CRM entries.

The main thing for us is that we want our agents to be notified of messages on Genesys Cloud in real time but also have the information stored on our CRM ‘Timeline’. The current pain point we have is that starting an interaction in Genesys Cloud and assigning to a queue keeps data in Genesys Cloud and we can obtain conversations etc to see what’s happened BUT there’s no way to then write this to our CRM ‘timeline’. I guess scenario 1 would be for someone to tell us Genesys Cloud could be customised to do this for us. (Scenario 1)

The reason we had the idea to start the conversation in our CRM is so that we can stamp all the data we need on the message and write the initial message to our database then send. This is the only way we could think of getting that required data on the message and in our DB at the same time. Once the recipient replies we’d then hope to use Open Messaging to gather both the initial message that we sent and also the customer response and push to Genesys Cloud to present in real time (or close to) to an Agent.

Does this make the scenario any clearer? or have I muddied the water further?

Kind Regards

Hello,

I am not totally sure I understand :slight_smile:

It might be easier if I expose some options and you can see if one could be of some help.

  1. If you use an Open Messaging type of integration:

This is just to say that when you server sends the message(s) to Genesys Cloud with the POST /api/v2/conversations/messages/inbound/open, you can also send custom attributes which will be saved in the Genesys Cloud conversation context (as participant attributes for the customer - i.e. participant with purpose="customer").

You can later access the conversation using the Conversations API and retrieve these attributes.

If you need to expose some of this information to the Contact Center Agent (i.e. the consultant), you can easily do so in a Script. You can define a variable with Input property enabled that will automatically extract the value of the participant attribute with same name.

A note on Open Messaging:
Open Messaging works the same way than email or facebook/twitter/sms integration from a threading timeline perspective.
I mean that when a messaging session gets delievered to a Contact Center Agent and the agent ends the conversation, the conversation is not totally closed. If the customer/guest (your server in this case) sends a new message to Genesys Cloud, before the threading timeline is over (72 hours by default - configurable per media type), the conversation will be reopened (i.e. using the same conversatioNId).

  1. If your integration is based on Genesys Cloud SMS:

As you probably know, what the consultant is doing from the Genesys Desktop to generate an SMS (on behalf of a queue, to an External Contact), is leveraging a public API (Platform API).

So if that's an acceptable way to generate the interaction, you could expose a custom button, in a webapp embedded in Genesys Cloud Desktop using Custom Client App integration or in your CRM if it can embed/run some custom html/javascript based code

This webapp would leverage the Platform API (authenticating to Genesys Cloud with the users credentials, to get an access token - this is done transparently in the browser as it will leverage the creds/tokens from the Genesys Cloud Desktop tab) and could request Genesys Cloud to generate that SMS.

The first thing would be to request the SMS - I think using POST /api/v2/conversations/messages.
You would get a conversationId in return that you could save to your CRM - or whatever else you want to use and save.
You could also add participant attributes to the conversation from there - retrieving the conversation context first with GET /api/v2/conversations/{conversationId} to also identify the participantId for the customer, and then invoking PATCH /api/v2/conversations/{conversationId}/participants/{participantId}/attributes.

As mentioned in Open Messaging case above, you could also display these attributes to the consultant through a Script tab in Genesys Desktop.

  1. Open Messaging or SMS integration (to sync back data with your CRM):

A way to sync back data to your CRM could be to "listen" to conversation events on Genesys Cloud.
Then based on certain criteria, you could decide to push data to your CRM (or not).

You can get conversation events (i.e. topics) using the notification service from Notifications API. This is based on a WebSocket approach.

If you are already leveraging AWS, there is a second approach which will soon become available - integration to Amazon EventBridge - to avoid websocket approach.
It is currently in beta but will be available soon. There are some answers the product manager provided on FAQs about the EventBridge integration - including target timeframe for availability.

Finally, there is another internal/restricted beta going on - about Automation Triggers.
The principle is that you will be able to define a trigger based on a topic (some of the Notifications API topics) and a matching criteria (a JSONPath expression). If the trigger is matched, it will allow to invoke an Architect workflow. From the workflow, you have access to the conversationId and other parameters, and you could invoke a Web Services Data Action to make a request to your CRM to get some data saved.

Hope that helps a bit.

Regards,

This topic was automatically closed 31 days after the last reply. New replies are no longer allowed.