2016-11-03 59 views
1

我想用Twilio模拟用户输入,所以我可以使用RSpec测试我们的语音系统。我可以创建一个新的电话,但official Twilio ruby gem似乎不允许我以用户输入数字的方式发送数字。模拟用户输入到rspec的twilio语音

@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

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。因此,为了测试接下来会发生什么,您需要发送POST请求到您用作action属性的URL与entered digits set as the parameter Digits

让我知道这是否有帮助。

+0

谢谢你的答案@philnash,只是给我的问题增加了一些细节。希望你可以迭代它!谢谢! – apollo701

+0

我不知道最新的宝石,像Twilio Test Kit一样工作。如果你想像那样测试你的流量,那么我建议分叉它并及时更新它。 – philnash