【问题标题】:Twilio Functions - Understanding customer voice through a outbound call using ASRTwilio Functions - 通过使用 ASR 的呼出电话了解客户语音
【发布时间】:2018-07-07 07:39:54
【问题描述】:

我需要自动为客户拨打电话并通过语音与他们进行互动。基本上,当客户拿起电话时,我的“机器人”会问:“嘿,你的订单好像没有完成,你想通过电话完成吗?”客户会说“是”、“否”或其他短语,我将按照流程进行操作。

我的问题

1) 使用 Twilio 解决此问题的最佳方法是什么?

2) 似乎 Twilio 具有此功能 (ASR),仅当我使用函数时才能理解入站呼叫。如何使用外拨电话做到这一点?

3) Twilio 准备好理解除英语以外的其他语言了吗?我需要使用葡萄牙语,巴西。

感谢您的帮助。

【问题讨论】:

    标签: c# twilio twilio-api twilio-functions


    【解决方案1】:

    这里是 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>
    

    在这种情况下,我们从&lt;Gather&gt; 开始,这样我们就可以捕捉到用户在通话过程中所说的任何内容。我们将input attribute 设置为“语音”,以便我们可以使用语音转文本来识别他们所说的内容。还包括hints attribute,它可以为您希望听到的文本提供服务提示。最后,有一个action attribute,这是一个将使用此结果调用的 URL。

    您可以使用language attribute 更改&lt;Gather&gt; 期望听到的语言。有一个 number of languages available 包括巴西葡萄牙语,您可以使用 "pt-BR" 进行设置。

    嵌套在&lt;Gather&gt; 中的是&lt;Say&gt;,您可以使用它来读出您的消息。您可以使用voice attribute 更改可用的声音。

    您需要做的下一件事是响应&lt;Gather&gt; 的结果。在这个阶段,这取决于您使用的 Web 应用程序框架。重要的是,当它有结果时,Twilio 将向设置为action 属性的 URL 发出 HTTP 请求。在该请求中将包含两个重要参数,SpeechResultConfidenceSpeechResult 有 Twilio 认为有人说过的文字,Confidence 的分数在 0.0 到 1.0 之间,表示 Twilio 对此的确定程度。希望您的结果将是“是”或“否”(或巴西葡萄牙语等价物)。此时,您需要返回更多 TwiML 来告诉 Twilio 下一步该调用做什么,具体取决于答案是肯定的、否定的还是缺失/不正确的。有关如何处理来自此处的呼叫的更多想法,请查看Twilio voice tutorials in C#

    让我知道这是否有帮助。

    【讨论】:

    • 按照示例成功构建了我的 API,tks。问题:是否可以避免使用 timeout 参数,并在每次用户停止讲话时向 API 发送信息?示例:你好,你是谁? (然后,Twilio 向我发送了请求)。我尝试使用超时来调用 API,但似乎他们不尊重该值。我需要在通话中等待一段时间。有任何想法吗?当我尝试从 VoiceRequest 对象获取语音结果时,一些巴西葡萄牙语字符(例如,单词“não,与“no”相同)刚刚破坏了我的 API。有什么想法吗?
    • 您可以尝试使用与调用异步调用的partialResultCallback,但这意味着您可以在获得预期结果后立即使用modify the call。至于性格问题,您能否提出一个新问题并提供更多细节?破碎是什么意思?
    • 在那边给你留言,希望对你有帮助!
    猜你喜欢
    • 2018-04-21
    • 1970-01-01
    • 1970-01-01
    • 2017-10-28
    • 1970-01-01
    • 1970-01-01
    • 2014-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多