News & Announcements User Community Developer Community

Welcome to the RingCentral Community

Please note the community is currently under maintenance and is read-only.

Search
Make sure to review our Terms of Use and Community Guidelines.
  Please note the community is currently under maintenance and is read-only.
Home » Developers
Different events about call transfer from App and Deskphone
Tags: webhooks, call transfer, call logs
Apr 19, 2022 at 6:57am   •   2 replies  •  0 likes
Egor Teplyakov

Hi!

I use telephony session events to collecting data about calls.

I noticed that there are two different ways as going call transfer from RingCentral App and Deskphone (Polycom VVX 350 for example).

In next two cases I calling from customer's phone number to Main phone number and enter extension number, then I accept this call o and transfer it to another extension.

First case:

When I call to Extension and pick up call from App, then transfer it to another extension, in telephony session notifications I see that new call started from caller to second extension, then 1st call is over. When 2nd call is over I see notification that inbound call from customer's number to 2nd extension is over.

1650375469826.png


Second case:

When I call to Extension and pickup Call from Deskphone and then transfer it to another extension, in telephony session notifications I see that 1st call on hold, then 1st extension is calling to 2nd extension and creating ext-to-ext call. When 2nd call is over I see only that ext-to-ext call is over and no events about call from customer's number to second extension.

1650375521941.png


In first case I can create from notifications two calls from customer to two different extensions. It's ok.

In second case I can create only 1 call from customer to 1st extension and second call will be just ext-to-ext. But I expect to log 2 calls from customer. Why this difference between Application and Deskphone? How I can resolve this situation with Deskphone?


Full events logs:

Deskphone-transfer.txt

Application-transfer.txt

2 Answers
answered on Apr 21, 2022 at 8:02am  

Here is how to can detect the original caller phone number after a warm transfer using the telephony session events.

Customer inbound call event

...
    "sessionId": "19845820049",
    ....
    "parties":[
      {
        ...
        "direction": "Inbound",
        "to": {
          "phoneNumber": "+1325xxxxxxx",
          "name": "Pavel Yurkevich",
          "extensionId": "363256048"
        },
        "from": {
          "phoneNumber": "+1469xxxxxxx",
          "name": "GRAPEVINE    TX"
        },
        "status": {
          "code": "Answered",
          "rcc": false
        },
...

Warm transferred call event

...
    // Original call's session id
    "sessionId": "19845820049",
    ...
    "parties": [
      {
        .
        "direction": "Inbound",
        "to": {
          "phoneNumber": "+1325xxxxxxx",
          "name": "Pavel Yurkevich",
          "extensionId": "363256048"
        },
        // Original caller phone number
        "from": {
          "phoneNumber": "+1469xxxxxxx",
          "name": "GRAPEVINE    TX"
        },
        "status": {
          "code": "Gone",
          "reason": "AttendedTransfer",
          "peerId": {
            ...
            // Warm transferred call's session Id
            "sessionId": "19845849049",
            ...
          },
          "rcc": false
        },
...

Customer and new agent call event

...
    // Warm transferred session id
    "sessionId": "19845849049",
    ...
    "parties": [
      {
        ...
        "direction": "Outbound",
        "to": {
          "phoneNumber": "704",
          "name": "Egor Teplyakov",
          "extensionId": "215743048"
        },
        // Replace the "from.phoneNumber" of the original call as you wish
        "from": {
          "phoneNumber": "+13258993376",
          "name": "Pavel Yurkevich",
          "extensionId": "363256048",
          "deviceId": "338329048"
        },
        "status": {
          "code": "Gone",
          "reason": "AttendedTransfer",
          "peerId": {
            ...
            // Original call's session id
            "sessionId": "19845820049",
            ...
          },
          "rcc": false
        },
...

So the logic you should build is to detect an "Inbound" call (original call) with the status == "Gone", parse the reason and the peerId to get the session Id of the warm transferred call. Then detect an "Outbound" call with the status == "Gone", parse the reason and the peerId to get the session Id of the original call. Copy the "from.phoneNumber" of the original call and replace the "from.phoneNumber" of the warm transferred call as you wish.


 0
on Apr 22, 2022 at 7:13am   •  0 likes

Thank you, it's works!

answered on Apr 20, 2022 at 9:39am  

Based on your full event logs, the first case and second case are not the same type of call transfer.

It looks like the first case was a blind transfer and the second case was a warm transfer.

For a blind transfer, the first call will get disconnected and the same call session is remained for the second call and the first call is disconnected with the reason below

"status": {
          "code": "Disconnected",
          "reason": "BlindTransfer",
          "rcc": false
        },

For a warm transfer, the first call will be on hold while the agent is making a call to the second agent (extension) and this will have a new call session (different session id). When the call is finally "warm" transferred, the first call will be gone with the reason below

"sequence": 11,
"sessionId": "19845820049",
...
"status": {
          "code": "Gone",
          "reason": "AttendedTransfer",
          "peerId": {
            "telephonySessionId": "s-a78854117eec0z1804111e726zd9ee980000",
            "sessionId": "19845849049",
            "partyId": "p-a78854117eec0z1804111e726zd9ee980000-1"
          },
          "rcc": false
        },

Since I don't have a desk phone to check, can you double check if there is an option to perform a blind transfer from your desk phone and make a blind transfer instead of a warm transfer so we can verify if there are differences between RC app and a desk phone in this scenario. If there is no option for blind transfer (weird if it does not support) from your desk phone, you can make a warm transfer in the RC app so we can compare the result.


 0
on Apr 21, 2022 at 4:55am   •  0 likes

Yes, you are right. First case is blind transfer, second one is the warm transfer. On deskphone it working similar to first case when it is blind transfer.

There is the problem in warm transfer. In this case events haven't number of original caller, only two extensions in party. Can you please advise the right way how I need to find out the original phone number of the caller when warm transfer is completed?



A new Community is coming to RingCentral!

Posts are currently read-only as we transition into our new platform.

We thank you for your patience
during this downtime.

Try Workflow Builder

Did you know you can easily automate tasks like responding to SMS, team messages, and more? Plus it's included with RingCentral Video and RingEX plans!

Try RingCentral Workflow Builder

PRODUCTS
RingEX
Message
Video
Phone
OPEN ECOSYSTEM
Developer Platform
APIs
Integrated Apps
App Gallery
Developer support
Games and rewards

RESOURCES
Resource center
Blog
Product Releases
Accessibility
QUICK LINKS
App Download
RingCentral App login
Admin Portal Login
Contact Sales
© 1999-2024 RingCentral, Inc. All rights reserved. Legal Privacy Notice Site Map Contact Us