【发布时间】:2019-03-13 15:51:48
【问题描述】:
我正在 Twilio 建议的应用中实现 warm-transfer。
我需要所有这些功能如下:
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”错误。
请让我知道如何实现这一点,或者我是否可以使用其他更好的方法来满足我的要求。
【问题讨论】:
-
A 20404 是缺少的资源(本质上是 404)。当您需要
pathCallSid参数的呼叫 sid 时,您可能会使用两次会议 ID。 -
是的,在示例代码中就是这样做的。实际上,当第一个电话进来时,它的 callSid 就变成了 ConferenceSid。我试图给 ConferenceSid 一个随机名称并使用该随机名称访问 ParticipantResource.Fetch 函数,但仍然是同样的问题。
标签: twilio twilio-api twilio-programmable-voice