首页 > 解决方案 > 通过 CallResource.CreateAsync 将参数传递给 Twilio,以编程方式将机器人添加到电话会议

问题描述

我正在尝试与主持人和几个参与者一起创建电话会议,其中一个是机器人。该机器人由主持人通过反向通道控制,因此它可以对电话会议说些什么等。

当主持人从 Web 客户端呼叫时,我设置了电话会议,然后使用CallResource.CreateAsync回调 url 拨入其他参与者和机器人,以便我知道要将他们添加到哪个会议。机器人需要获取一个参数,以便它知道要听取哪个主持人的指令。但是,我似乎无法从 C# API 使用CallResource.CreateAsync.

将参与者添加到呼叫(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 中设置为带有 webhook 的 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 或 phonenumber?

我是否需要以不同的方式将机器人添加到通话中?

标签: c#twilio

解决方案


参数在 https://www.twilio.com/docs/voice/how-share-information-between-your-applications 上或To传递Url

我相信您的用例会将其放在Url. 假设你有一个moderatorId

var botCallbackUrl = GetConnectConferenceUrl(callData.CallToken, isBot: true, moderatorId);
var botUrl = new Uri(botCallbackUrl);

在哪里GetConnectConferenceUrl添加您需要的参数。

我已经To在线上将它用于客户端端点,所以看起来像

var toBot = $"{new PhoneNumber(botNumber)}?moderatorId={moderatorId}";

推荐阅读