Create and track calls with zoom phone zoomphonecall URI and webhooks - questions

We have a few questions about use of the Zoom Phone interface that hopefully someone can help with.

We are building a Zoom Phone interface that needs to do the following while using the application:

  • Allow agent to dial a number selected from a list on a browser page.
  • Associate the call with a application contact record.
  • Determine duration and outcome of the call that was just started by that agent and associate with contact.
  • Locate and process recording associated with that call and contact, when it is available.
  • Locate and process transcript associated with that call and contact, when it is available.

We have not found an API that would allow an application to start a call using Zoom Phone.

A question is whether an API is available to use from an app server, as that would greatly simplify the dialing process .

We found references to the zoomphonecall URI scheme, which would be used in the client browser.

The format of the URI is – zoomphonecall://{phone number to call}?callerid={caller id}

We also found references to Zoom Phone Webhooks that are invoked when specified events occur.

However, there does not seem to be a unique key to tie the zoomphonecall URI requests and corresponding webhook invocations.

The phone number is available, but would not necessarily be unique, such as several agents calling into a PBX at the same time.

The caller id must be an extension or an E.164 number, according to the description, so a unique caller id could not be used.

Another question is whether the caller id in the URI scheme can be used to match the extension_id in the webhooks.

That would be only a partial solution, as the same caller_id and extension_id could be in multiple call requests.

Is there a recommended solution beyond just using the most recent one?

How can the calls that the agent is making directly through the zoom phone be differentiated from those made using zoomphonecall?

We need to process only the calls that the agent is requesting to be started through application.

2 Likes

Noticing this question just after submitting my own which seems to be getting at the same concept /t/request-for-embedding-metadata-in-zoom-phone-calls-for-post-call-retrieval-via-api/119367

@budp - did you land on a workaround?

We created a hidden a tag with the appropriate zoom classes, populated it appropriately, and issued Click on the field.
We also created a table record with the called phone number and calling number.
Then we checked the incoming messages in the webhooks for that phone number and matched it to the originator of the call so we could track the call from start to completion, including events like end call, recording available, etc.

2 Likes

Thank you for the response! I think I understand and this approach seems reasonable, depending on scale, trust in the workflow preventing concurrent calls to the same recipient, and the required level of guarantee on attribution. i.e. what happens if two users call the same recipient concurrently? Attribution on the webhook call becomes ambiguous because there are multiple unattributed entries in your database. Are y’all solving for this or just chalking up as an unlikely edge case and an understood shortcoming of the system? Capturing both the to & from removes the ambiguity.

That edge case should be very rare because the webhook response comes back so quickly.

Once the webhook message is available, the key is changed to be both caller and called numbers for the remainder of the call.

Otherwise there does not seem to be a way to resolve the problem completely – this has been working for us for several months.

Zoom really should provide an API to start a call instead of the URL with only the called number – then there would be no ambiguity.

I asked about such an API and did not get a response.

2 Likes

I have similar issue like yours, I reached to to see if even zoom contact center can solve this but no i dont think it is available.

I have a couple question for you.

from what i understand, when user click zoomphonecall , you create a record somewhere and wait until the user click Dial, then you match the webhook with that record?

If so. what if the user waited 5 - 10 minutes to call instead of calling immediately, do you invalidate the initial record within a time frame?

for the record, I have each user with their own phone numbers, the outbound callee is one phone number, i’m trying to distinguish which profile they are calling for.

@budp you are using the Zoom Phone Smart Embed for the URI call schemes callto and zoomphonecall?

cc @kencds