我正在尝试使用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')
答案 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请求。
让我知道这是否有帮助。