In this Use Case, we're going to look up caller information in Zendesk (CRM) and display it in Nimbus. We also want to pop up the contact view in Zendesk if the caller has been found.
PRECONDITIONS
Licensing:
- Enterprise Routing Contact Center - You require at least an Enterprise Routing license to make use of the Nimbus Power Automate Connector. Also check the other preconditions of the connector to ensure it runs properly.
-
As you also require a Power Automate Premium subscription to use both the Nimbus and Zendesk Flow Connector we recommend using a Tenant Admin account to configure this (and other) flows.
💡Note: The cost for Power Automate subscriptions is determined by Microsoft and out of Luware support scope.
Users & Accounts:
- You need Service owner rights to to create the flow and configure Nimbus.
- You have a running Zendesk instance for you company with a service account. You can register to get a Zendesk demo account on the official website. We strongly recommend you create a test company and one user to test your flow.
🔍 Related Info: Zendesk API quick start | Zendesk Developer Docs
INC Icon Legend Accordion
Show Icon Legend
💡 = A hint to signal learnings, improvements or useful information in context. | 🔍 = Info points out essential notes or related page in context. |
☝ = Notifies you about fallacies and tricky parts that help avoid problems. | 🤔 = Asks and answers common questions and troubleshooting points. |
❌ = Warns you of actions with irreversible / data-destructive consequence. | ✅ = Intructs you to perform a certain (prerequired) action to complete a related step. |
Overview of the flow
Prepare your Zendesk Instance
✅ Make sure to create a contact with a valid phone number in your Zendesk instance. As we are working with the default installation of Zendesk, the fields of a contact are limited to the following:
Add Nimbus Trigger
Start with the element "GetOnNewTasks" or “GetonUpdatedTasks” and select the service your want to run this flow with.
💡 This will supply us with the necessary "Caller ID" field as soon as the call is ringing on the service.
Find Zendesk Contact
According to a Power Automate integration discussion the Zendesk Integration has an unfixed bug in regards to filtered queries.
The Zendesk Get Items action doesn't actually work if you have any filters applied so you can only make this work using HTTP action. Get Items is essentially redundant until it's fixed, although this has not been updated in 4 years since the first report on the community in 2019, so I suspect Zendesk aren't interested in fixing the integration.
→ Workaround: We successfully tested our scenario using the Zendesk Power Automate Connector in June 2023 but as of March 2024 this does not work any more. We do not recommend using this:
Instead, use the HTTP Connector as described in this article.
Now we want to match the "caller ID" field with the contact in Zendesk. As shown in the previous step we used the "Details" field in our example. We need to filter on that field.
-
Add a new HTTP Request element to the flow and set it to:
- URI = The API user search endpoint with HTTP query on @{triggerOutputs()?['body/microsoftCallerId']}
- Method = GET
- Header = as given in the screenshot
- Authentication Type = if you are using basic auth, then it's simply username and password. Refer to the Zendesk api documentation for other authentication methods.
-
We can parse the content with a “Parse JSON” from the Compose collection. Rename the element into “ZendeskUser”.
- Content = body('Get_User_by_Phone_number')?['users'][0]
- Schema= Every Zendesk instance is different due to configurations. Run the flow first to get a response from the previous step. Then you can use the output to generate the schema.
Now we want to store the ID of the first contact found in the collection in a variable.
-
Add a "Initialize variable" element to the flow and set it to the following:
- Name = “ZendeskId”
- Type = string
-
Value= body('ZendeskUser')?['id']
Update the Nimbus Task
Now we want to update the Nimbus task with the contact information from Zendesk.
Add Nimbus UpdateTask with the following values:
- CustomerCustomFields.ZendeskCustomerUrl = concat('<Zendesk URI>/agent/users/',variables('ZendeskId'),'/requested_tickets')
- Customer.CustomFields.ZendeskId = variables('ZendeskId')
- Customer.Displayname = outputs('Get_items')?['body/value'][0]['name']
Configure Nimbus
Last but not least, you need to add a custom conversation context item in Nimbus configuration to screen pop the ZendeskCustomerUrl on an incoming call and assign it to the service.
- Head to Configuration > Conversation Context and create a new item under your service's Organization Unit (OU).
💡 If this context is to be used by multiple Zendesk-reliant services each in their own flows, make sure to set the OU a level higher so all services see this context. - As URL, use:
$(Customer.Customfields.ZendeskCustomerUrl)
- Apply the context for each service within the Service Settings > Context tab.
- Make a test call with a known PSTN in your Zendesk instance to see if the context is now looked up and opening correctly.
💡 Reminder: Make sure the task-receiving user has Nimbus portal open in their browser. Otherwise the context window cannot be opened.