【问题标题】:simulating user input to twilio voice with rspec使用 rspec 模拟用户对 twilio 语音的输入
【发布时间】:2016-11-08 03:34:03
【问题描述】:

我正在尝试使用 Twilio 模拟用户输入,以便可以使用 RSpec 测试我们的语音系统。我可以创建一个新呼叫,但 official Twilio ruby gem 似乎不允许我以用户键入的方式发送数字。

@client = Twilio::REST::Client.new(account_sid, auth_token)
call = @client.calls.create({
  from: '+1555550000',
  to: '+15555559999',
  url: 'www.example.com/twilio-endpoint'
})

这会返回一个调用对象,我希望你可以向它发送数字,但你不能。您可以在开始通话时通过传递:send_digits 键发送数字,但一旦开始,您就不走运了。我们需要与手机菜单等进行交互。

有一个名为 Twilio Test Kit 的 gem 曾经使这变得容易,但它在很久以前就被它的维护者抛弃了。人们在做什么来测试他们的 Twilio 语音应用程序?

更新:我应该将其添加到原始帖子中——但我希望编写可能类似于

的功能测试
expect(call).to play_voice_recording('path/to/recording.wav')
call.dial(123)
expect(call).to say('confirmed successfully')
call.dial(0)
expect(call).to say('transferring to operator')

【问题讨论】:

    标签: ruby-on-rails rspec twilio


    【解决方案1】:

    这里是 Twilio 开发者宣传员。

    调用对象实际上是call resource in the REST API 的包装器。您可以更新 call's state using the REST API,但这仅允许您将调用重定向到返回 TwiML 的另一个 URL,或者取消或完成调用。

    大概您的/twilio-endpoint 正在返回TwiML,其中包括您尝试测试用户响应的<Gather>。当用户在电话中输入数字以响应 <Gather> 时,下一个操作是让 Twilio 将这些数字发布到 <Gather>action attribute。因此,要测试接下来会发生什么,您需要向您用作 action 属性的 URL 发送一个 POST 请求,并带有 entered digits set as the parameter Digits

    让我知道这是否有帮助。

    【讨论】:

    • 感谢@philnash 的回答,只是在我的问题中添加了更多细节。希望你可以迭代它!谢谢!
    • 我不知道有像 Twilio Test Kit 那样工作的最新 gem。如果您想像这样测试您的流程,那么我建议您分叉并更新它。
    猜你喜欢
    • 2021-10-10
    • 2019-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多