这里是 Twilio 开发者宣传员。
要自动拨打电话,您需要使用Twilio Programmable Voice API。我注意到您根据标签使用 C#,因此您可以从 Twilio C# library 开始。使用该库,您可以像这样make calls with the API:
using System;
using Twilio;
using Twilio.Rest.Api.V2010.Account;
using Twilio.Types;
class Example
{
static void Main(string[] args)
{
// Find your Account Sid and Auth Token at twilio.com/console
const string accountSid = "your_account_sid";
const string authToken = "your_auth_token";
TwilioClient.Init(accountSid, authToken);
var to = new PhoneNumber("+14155551212");
var from = new PhoneNumber("+15017122661");
var call = CallResource.Create(to,
from,
url: new Uri("http://demo.twilio.com/docs/voice.xml"));
Console.WriteLine(call.Sid);
}
}
有关这一切的含义的更多详细信息,请查看making outbound phone calls with C# 上的指南。
您将在该示例中看到我们将 URL 传递给进行调用的方法。此 URL 可以指向任何地方,包括 Twilio Function(它只是在 Twilio 基础架构中运行的 Node.js)或您自己的服务器。当调用连接到用户时,Twilio 将向该 URL 发出 HTTP 请求,以了解下一步该做什么。要告诉 Twilio 要做什么,您需要返回 TwiML。
要使用您想要的消息进行响应,然后从您的用户那里收集语音输入,您需要使用 TwiML 的 <Say> 和 <Gather> 元素。示例响应可能如下所示:
<Response>
<Gather input="speech" hints="yes, no" action="/gatherResponse">
<Say voice="alice">Hey, it seems you didn't finish your order. Would you like to finish by phone?</Say>
</Gather>
</Response>
在这种情况下,我们从<Gather> 开始,这样我们就可以捕捉到用户在通话过程中所说的任何内容。我们将input attribute 设置为“语音”,以便我们可以使用语音转文本来识别他们所说的内容。还包括hints attribute,它可以为您希望听到的文本提供服务提示。最后,有一个action attribute,这是一个将使用此结果调用的 URL。
您可以使用language attribute 更改<Gather> 期望听到的语言。有一个 number of languages available 包括巴西葡萄牙语,您可以使用 "pt-BR" 进行设置。
嵌套在<Gather> 中的是<Say>,您可以使用它来读出您的消息。您可以使用voice attribute 更改可用的声音。
您需要做的下一件事是响应<Gather> 的结果。在这个阶段,这取决于您使用的 Web 应用程序框架。重要的是,当它有结果时,Twilio 将向设置为action 属性的 URL 发出 HTTP 请求。在该请求中将包含两个重要参数,SpeechResult 和 Confidence。 SpeechResult 有 Twilio 认为有人说过的文字,Confidence 的分数在 0.0 到 1.0 之间,表示 Twilio 对此的确定程度。希望您的结果将是“是”或“否”(或巴西葡萄牙语等价物)。此时,您需要返回更多 TwiML 来告诉 Twilio 下一步该调用做什么,具体取决于答案是肯定的、否定的还是缺失/不正确的。有关如何处理来自此处的呼叫的更多想法,请查看Twilio voice tutorials in C#。
让我知道这是否有帮助。