Twilio:保持热转移通话

时间:2019-03-13 15:51:49

标签: twilio twilio-api twilio-programmable-voice

我正在Twilio建议的应用程序中实现热转移
我需要以下所有功能:
https://www.twilio.com/docs/voice/tutorials/warm-transfer

我从Github下载了此示例,以检查这种方法是否适用:
https://github.com/TwilioDevEd/warm-transfer-csharp

现在我面临的问题是,当第一个座席呼叫第二个座席时,我无法让第一个呼叫者保持听音乐的状态,并告诉他们有关呼叫者的问题并挂断自己(即第一个座席)

我已在示例代码中添加了这段代码,以保留呼叫者:

public async Task<ActionResult> CallAgent2(string agentId)
    {
        var call = await _callsRepository.FindByAgentIdAsync(agentId);
        var participant = ParticipantResource.Update(
            pathConferenceSid: call.ConferenceId,
            pathCallSid: call.ConferenceId,
            hold: true,
            holdUrl: new System.Uri("http://twimlets.com/holdmusic?Bucket=com.twilio.music.classical")
        );

        var callBackUrl = GetConnectConfereceUrlForAgent(agentId, call.ConferenceId);
        _callCreator.CallAgent("agent2", callBackUrl);
        return new EmptyResult();
    }

但是我收到了Twilio的“错误20404”错误。
请让我知道如何实现此目标,或者是否可以使用其他更好的方法来满足我的要求。

1 个答案:

答案 0 :(得分:0)

这里是Twilio开发人员的传播者。

您收到20404错误,因为您试图通过将会议SID作为需要呼叫SID的参数来引用不存在的资源。

会议和呼叫是不同的资源,这就是为什么要提及会议的参与者,您需要会议SID和参与者的呼叫SID。

您拥有呼叫SID,这被混淆地称为会议ID,但这是因为在创建TwiML以便将某人拨入会议时,它被用作友好名称。

由于它是友好名称,这意味着我们可以通过按友好名称进行过滤来查找会议。

javac -classpath "/home/guestuser/My Jars/sdk/lib/*" MyProgram.java

这将返回所有正在进行的会议,其友好名称与呼叫SID相同。这将是最多一次会议。然后,您可以使用会议SID以及呼叫SID来更新参与者。尝试这样的事情:

java -classpath "/home/guestuser/My Jars/sdk/lib/*:/home/guestuser/programs" MyProgram