c# - 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。
那么,有两个问题,为什么在使用我的测试凭证时电话没有被执行?而且,如果/当电话响起时,为什么它不执行/击中包含我的“说”动词的端点?
解决方案
Twilio 开发人员布道者在这里。
测试凭据不用于进行测试调用,它们用于确保对 API 的调用按预期工作,并且不会自行生成调用。文档说:
当您使用您的测试凭据进行身份验证时,我们不会向您的帐户收费、更新您的帐户状态或连接到真实电话号码。
至于您何时使用真实凭据拨打电话,这里还有更多内容需要查看。
15 秒是 Twilio 在尝试连接到端点时将等待的超时。这表明 ngrok 正在工作并代理请求,但您的 Web 应用程序挂起或响应时间过长。
您可以从浏览器(或 Postman 或 curl)访问您的 ngrok 端点吗?当您访问它时,您的 Web 应用程序是否记录了任何可能有帮助的信息?ngrok 仪表板(在 ngrok 运行时可在http://127.0.0.1:4040获得)是否为您提供更多见解。
让我知道,我会用更多建议更新我的答案。
推荐阅读
- r - shinydashboard:如果有多个 menuSubItems,则 menuSubItem 不会在开始时呈现
- javascript - IE11/Edge 中画布上下文的内存使用情况
- android - 在 Gradle 属性文件中将您的 API_KEY 添加到从 GitHub 下载的 Android 项目
- google-play - Play 商店发布(应用产品中强制的免费应用)
- ruby-on-rails-5.2 - 使用 find_or_create_by! 在 before_action 过滤器中
- c++ - 背景更改时具有非本机滚动条的 QTreeWidget
- matlab - 错误状态卡尔曼滤波器估计错误值
- python - 如何将钱(以便士)转换为单个硬币?
- javascript - 无法在 jquery ajax 中实现延迟承诺
- mysql - MYSQL ON DELETE CASCADE - 仅在主键上设置时有效