问题描述
我正在尝试与主持人和几个参与者创建电话会议,其中一个是机器人。 机器人由主持人通过反向通道控制,因此它可以在电话会议中说事情等。
当主持人从 Web 客户端呼入时,我设置了电话会议,然后使用带有回调 URL 的 CallResource.CreateAsync
拨入其他参与者和机器人,以便我知道要将他们添加到哪个会议。
机器人需要获取一个参数,以便它知道听哪个主持人的指令。
但是,我似乎无法使用 CallResource.CreateAsync
从 C# API 将任何参数传递给机器人(目前正在通过另一个 TwiML 应用程序触发)。
将参与者添加到通话中(callbackUrl 将连接的通话添加到会议中)- 这很好用:
var to = new PhoneNumber(callData.PhoneNumber);
var from = new PhoneNumber(_twilioSettings.PhoneNumber);
var callbackUrl = GetConnectConferenceUrl(callData.CallToken);
var url = new Uri(callbackUrl);
var participantCallResource = await CallResource.CreateAsync(to,from,url: url);
添加要调用的机器人(电话号码在 Twilio 中设置为 TwiML 应用程序,并带有返回我的服务器的网络钩子) - 如何将参数传递给 TwiML 应用程序?
var toBot = new PhoneNumber(botNumber);
var fromBot = new PhoneNumber(_twilioSettings.PhoneNumber);
var botCallbackUrl = GetConnectConferenceUrl(callData.CallToken,isBot: true);
var botUrl = new Uri(botCallbackUrl);
var botCallResource = await CallResource.CreateAsync(toBot,fromBot,url: botUrl)
如何将参数从 C# 传递到 TwiML bin 或 Webhook 或电话号码?
我是否需要以不同的方式将机器人添加到通话中?
解决方法
参数在 To
或 Url
每个 https://www.twilio.com/docs/voice/how-share-information-between-your-applications 上传递
我相信您的用例会将其放在 Url
上。假设您有一个 moderatorId
:
var botCallbackUrl = GetConnectConferenceUrl(callData.CallToken,isBot: true,moderatorId);
var botUrl = new Uri(botCallbackUrl);
其中 GetConnectConferenceUrl
添加您需要的参数。
我在客户端端点的 To
行上使用了它,看起来像
var toBot = $"{new PhoneNumber(botNumber)}?moderatorId={moderatorId}";