首页 > 解决方案 > Twilio 使用 ngrok 测试出站呼叫

问题描述

我正在尝试使用我的 Twilio“测试”凭据通过 Twilio 测试我的出站呼叫。这是一个 ASP.NET MVC 4 Web 应用程序,它托管 Twilio 的端点。由于我在 localhost 上运行,它们将通过 ngrok(路由到您的 localhost 的公共端点)被击中。

我在 twilio 中配置了一个 [toll-free] 电话号码,语音请求路由到我的 ngrok url。

当我尝试在我的 Web 应用程序中执行我的测试出站呼叫时,我导航到一个测试控制器。它会触发一些最终执行此操作的代码:

var call = _client.InitiateOutboundCall(
    new CallOptions
    {
        From = "+1" + _fromPhone, // twilio toll-free phone number with base site/ngrok url configured, ie http://{ngrokcode}.ngrok.io
        To = "+1" + phoneNumber, // phone that I want to "answer" and listen to the message
        Url = url, // ngrok url that points to my localhost endpoint to play message, ie http://{ngrokcode}.ngrok.io/message/{forCustomerId}
        IfMachine = "Continue"
    });

在这次通话中,“_fromPhone”是我在 twilio 中购买/配置的电话号码,免费电话号码,它是路由到我的 ngrok url 的电话号码。

“phoneNumber”是我要拨打的电话

“url”是我希望 twilio 命中的端点,因此它可以向收件人“说”消息。

但是,使用这些测试凭证,电话永远不会打断。我不小心运行了同样的东西,但是使用生产凭据,电话确实出去了(并开始在我的手机上响起),但是当我接听时,它沉默了大约 15 秒,然后它终于说 twilio 遇到了一个错误。

查看意外生产调用的日志,它说它无法连接到我的 [ngrok] url。

那么,有两个问题,为什么在使用我的测试凭证时电话没有被执行?而且,如果/当电话响起时,为什么它不执行/击中包含我的“说”动词的端点?

标签: c#twilio

解决方案


Twilio 开发人员布道者在这里。

测试凭据不用于进行测试调用,它们用于确保对 API 的调用按预期工作,并且不会自行生成调用。文档说

当您使用您的测试凭据进行身份验证时,我们不会向您的帐户收费、更新您的帐户状态或连接到真实电话号码

至于您何时使用真实凭据拨打电话,这里还有更多内容需要查看。

15 秒是 Twilio 在尝试连接到端点时将等待的超时。这表明 ngrok 正在工作并代理请求,但您的 Web 应用程序挂起或响应时间过长。

您可以从浏览器(或 Postman 或 curl)访问您的 ngrok 端点吗?当您访问它时,您的 Web 应用程序是否记录了任何可能有帮助的信息?ngrok 仪表板(在 ngrok 运行时可在http://127.0.0.1:4040获得)是否为您提供更多见解。

让我知道,我会用更多建议更新我的答案。


推荐阅读