使用rspec模拟用户输入twilio语音

时间:2016-11-03 21:47:14

标签: ruby-on-rails rspec twilio

我正在尝试使用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的宝石曾经让这个变得容易,但很久以前它被它的维护者抛弃了。人们正在做什么来测试他们的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')

1 个答案:

答案 0 :(得分:0)

Twilio开发者传道者在这里。

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

据推测,您的/twilio-endpoint正在返回TwiML,其中包含您尝试测试用户响应的<Gather>。当用户在手机中输入数字以响应<Gather>时,下一步操作是Twilio将这些数字发布到<Gather>的{​​{3}}。因此,要测试接下来会发生什么,您需要向您用作action Stickers.xcstickers属性的网址发送POST请求。

让我知道这是否有帮助。