Full omni-channel SMS and message integration in Zendesk

Katrin Geske
Katrin Geske
  • Updated

Creating Zendesk tickets for every incoming or outgoing SMS is easy, but usually, customers expect to have a different experience for SMS than for phone calls (which usually create a new ticket per case). Typically, there's an anticipation of a seamless conversation that mirrors a phone dialogue.

Babelforce allows for an expanded range of use cases. We will begin by introducing these, followed by a detailed integration guide.

Use cases

Incoming SMS conversation

A customer gets in touch with the support staff via SMS. This customer had contacted the service via SMS before but the last time was three months in the past.

This action generates a new ticket in Zendesk. The support agent responds via the babelforce integration, logging their reply in the ticket.

If the customer confirms resolution within 24 hours, the ticket is closed. A new SMS from the customer after 24 hours triggers the creation of a new ticket.

Outgoing SMS initiation

An agent sends an SMS using babelforce, which generates a new ticket containing this initial message. If the customer replies within 24 hours, it's added to the active ticket, maintaining the conversation thread.

Agents can reply in the same ticket at any time, but a customer's response after 24 hours results in a new ticket, where the agent can choose to merge it with the previous one or proceed separately.

SMS integration with email or system notifications

When a customer's email requires a swift reply, the agent can use SMS. This text response is documented in the ongoing ticket.

Subsequent SMS replies from the customer, and further emails with additional details, are all collated within the same ticket thread.

Similarly, for system alerts (like a failed payment), an agent may initiate an SMS dialogue within the existing ticket. Any SMS correspondence is compiled in the same thread, ensuring continuity.

The process for the agents

To achieve this omni-channel approach, it is important to not only build the right integrations which will be covered next. Just as important, however, is agent training. We prepared an article with a video just for agents, explaining how they should send out messages.

Things to consider before building the integration

A central question you have to ask yourself is: How long should a response of a customer via SMS or message be added to the same ticket? And at which point should a new ticket be opened? This is very important to consider. It is fully up to you to decide whether a conversation with one customer can go on for 200 days or only a couple hours. Often, our customers decide to go for anything between 24 and 72 hours.

When you continue to the integration you need to know this as you will have to set this idle time in the automation. Whatever time you decide to go for, you must convert this time into seconds. More about this further below

Some useful information on the integration 

To build the integration, only 4 global automations are needed. Besides that, all you need is an "Always" trigger. 

You also need a Zendesk integration. You find it here:

Integrated Processes > Integrations

You will need the ID of the Zendesk Integration you want to use. You can look this up via the babelforce API by calling this endpoint:

curl -L 'https://{yourEnv}.babelforce.com/api/v2/integrations' -H 'Authorization: Bearer {yourAdminToken}'

If you need support, just reach out to the support team.

Be aware: you are using an automation that is bundling a number of steps. Both task automations include a number of steps that would usually take 5 - 6 separate automations each as well as complex triggers. If you want to understand how this task is setup, we ask you to refer to our advanced training material.

Setting up the Global Automations

  • 2x Zendesk: Enduser Lookup
  • 2x Create task via template

Enduser Lookup

The first two automations are very simple: find the zendesk_v2 look up end-user and created it twice: one for the SMS received and one for the SMS sent event.

There are no special settings, feel free to use the standard that is presented to you. As trigger select "always".

 

SMS sent: Task Automation

For the basic fields:

  • Priority: chose a priority below the look up enduser
  • Events: SMS sent
  • Actions: Create task via template
  • Trigger: Always

----

Task specific fields:

Select the babelforce integration

Template: open babelfore templates > v1.0.0_babelforce.zendesk.sms.sent.json

 

Once the template was selected, you see a large number of Request body fields appearing:

We will guide you through each and suggest possible context. Please do not adjust any of the fields only containing curly brackets. Those values are needed by the automation. In the description we state which fields may be adjusted by you. They are colored green. The integration id must be changed to match your integration's id. This column is highlighted red.

Key name Key Value Description
body.agentName {agent.name} This value stores the name of the agent handling the message.
body.agentSourceId {agent.sourceId} The agent source id is needed to associate the ticket with the agent.
body.zendeskTicketId {zendesk.ticket.id} This value stores the ticket id of the Zendesk ticket. This enables us to update the ticket in future conversations.
body.consumerNumber {consumer.number} Here, the consumer's number is stored. It will be used in the ticket update.
body.ticketSubject New SMS from {sms.from} The subject of the ticket can contain any information relevant for you. You may adjust it to your own liking.
body.integrationId e.g. c64faf3rffr29a4c9ea5b 78545bf962995 This id is the id of your zendesk integration. It has to be retrieved from the system (see description above). You have to replace it with your id. If you need support, get in touch with the team.
body.fromNumber {sms.from} This returns the number the text was send from, also called "sender id"
body.ticketComment {sms.text} The placeholder returns the content of the text message and it will appear in the ticket. You can add any text before and after the curly brackets to customize your setup.
body.conversationSession {conversation.id} Value returns the id of the message's conversation
body.requesterId {integration.zendesk_v2.enduser.id} Returns the Zendesk id of the end user. Needed to assign the ticket to the right user.

 

SMS received: Task Automation

For the basic fields:

  • Priority: chose a priority below the look up enduser
  • Events: SMS received
  • Actions: Create task via template
  • Trigger: Always

----

Task specific fields:

Select the babelforce integration

Template: open babelfore templates > v1.0.0_babelforce.zendesk.sms.received.json

After selecting the template, you will be presented with these fields. They differ slightly from the fields in the send action:

Below, we explain the 8 fields. As above, the green fields can be adjusted, the red field has to be changed and the white fields just need to be copy pasted.

Key name Key Value Description
body.idleTime 86400 The threashold at which a new ticket is being created. In the example, we picked 24 hours. You can pick any time to decide for how long a text message should either update an existing tickets or create a new one.
body.toNumber {sms.to} Here, the number of the customer who sent the text is stored. It will be used in the ticket update.
body.ticketSubject New SMS from {sms.from} The subject of the ticket can contain any information relevant for you. You may adjust it to your own liking.
body.integrationId e.g. c64faf3rffr29a4c9ea5b 78545bf962995 This id is the id of your zendesk integration. It has to be retrieved from the system (see description above). You have to replace it with your id. If you need support, get in touch with the team.
body.fromNumber {sms.from} This returns the number the text was send from, also called "sender id"
body.ticketComment {sms.text} The placeholder returns the content of the text message and it will appear in the ticket. You can add any text before and after the curly brackets to customize your setup.
body.conversationSession {conversation.id} Value returns the id of the message's conversation
body.requesterId {integration.zendesk_v2.enduser.id} Returns the Zendesk id of the end user. Needed to assign the ticket to the right user.

Was this article helpful?

/

Comments

0 comments

Please sign in to leave a comment.