当前位置:  开发笔记 > 后端 > 正文

如果没有人接听,请转发twilio呼叫语音邮件

如何解决《如果没有人接听,请转发twilio呼叫语音邮件》经验,为你挑选了1个好方法。

对于我正在努力解决的问题,我喜欢关于我的twilio设置的一些建议.

概述:

我们系统中的每个用户都配置了一个twilio电话号码,他们可以将这些电话号码发送给任何人与他们联系.

如果personA通过配置的twilio电话号码联系我们系统中的用户(userB),我们希望将它们与userB连接(如果可用).如果userB不可用,我们希望将personA指向语音邮件.换句话说,我们希望确保我们能够控制语音邮件体验和语音邮件本身,以便我们可以将其存储在我们的系统中,而不是将语音邮件保留在用户B的设备上.

当前解决方案

PersonA的来电被添加到队列中.同时,系统拨出userB.

要求UserB按1接受呼叫.从UserB显式输入的原因是检测UserB是否可用于应答呼叫.(例如,如果对UserB的呼叫转到他们的个人语音邮件,则不会发生明确的数字输入,告诉我们他们无法回答.)

如果UserB未在指定的时间内输入1,则将PersonA定向到语音邮件.

如果UserB按1,则修改对UserB的调用(通过twilio rest api)以拨打PersonA所在的队列以连接UserB和PersonA.

当前解决方案的问题:

在该解决方案中,何时转移personA对语音邮件的呼叫的控制由对UserB的呼叫的结果控制,这似乎是次优的.例如,我们可能根本无法呼叫UserB.在这种情况下,personA将无限期地留在队列中.

在这种情况下我想要发生的是轮询队列人员A进入以检查队列中的时间,并且如果队列中的时间大于阈值,则将呼叫转移到语音邮件.但是,似乎不可能准确地知道呼叫在队列中无人值守多长时间,因为:

in-progress即使呼叫者正在收听等待音乐,队列中呼叫的状态也是如此.这与PersonA的呼叫已被回答的状态相同.

如果UserB拨入队列,则当桥接方断开连接时,呼叫才会出列,而PersonA呼叫的呼叫状态不会发生变化,表明它们已连接到UserB.

问题

我理解为什么我无法轮询呼叫队列以转移对语音邮件的呼叫正确吗?

我是否应该将PersonA召集到会议中,如果UserB可用,将他/她连接到PersonA所在的会议?

如果我使用会议设置,那么最简单的方法是检测PersonA在会议中等待多长时间,以便在UserB从未加入会议时将PersonA的呼叫转移到语音邮件?

philnash.. 16

Twilio开发者传道者在这里.

我想你可能在队列中有一些过于复杂的东西.您实际上可以提供消息并在原始呼叫中收集,而无需自己拨出电话并最终连接两个电话.

这是如何做:

您的来电TwiML应如下所示:


  
    
      ONWARD DIAL NUMBER
    
  

名词提供URL将在连接两个调用之前播放该URL的TwiML内容.您可以在此处使用以确保用户已应答呼叫而不是他们自己的语音邮件系统:

/whisper


  
    You are receiving a call, press any key to accept
  
  

/gather_result需要制定出一个键是否被按下.如果它被按下,那么我们将进入调用,我们可以使用空响应,因为这会将控制权恢复到原始状态.如果没有按下任何数字,我们会挂断此端,这会导致原始文件完成并指向其action属性.(我不确定你使用的语言是什么,但这里有一些Rubyish伪代码)

/gather_result


  if params["Digits"] and params["Digits"].empty?
    
  end

/call_complete一旦行动结束,就会被召唤.如果此时呼叫状态为"已完成"或"已应答",则用户已接听电话并正确回应耳语,我们可以挂机.如果是其他任何内容,我们会将呼叫重定向到我们的语音邮件记录器.

/call_complete


  if params["DialCallStatus"] == "completed" or params["DialCallStatus"] == "answered"
    
  else
    The call could not be answered this time, please leave a message
    
  end

最后,您的/record_complete操作可以使用录制URL执行任何操作并挂断电话.

/record_complete


  

这可以通过Twimlets实现,如本博文中所述.如果这有帮助,请告诉我.



1> philnash..:

Twilio开发者传道者在这里.

我想你可能在队列中有一些过于复杂的东西.您实际上可以提供消息并在原始呼叫中收集,而无需自己拨出电话并最终连接两个电话.

这是如何做:

您的来电TwiML应如下所示:


  
    
      ONWARD DIAL NUMBER
    
  

名词提供URL将在连接两个调用之前播放该URL的TwiML内容.您可以在此处使用以确保用户已应答呼叫而不是他们自己的语音邮件系统:

/whisper


  
    You are receiving a call, press any key to accept
  
  

/gather_result需要制定出一个键是否被按下.如果它被按下,那么我们将进入调用,我们可以使用空响应,因为这会将控制权恢复到原始状态.如果没有按下任何数字,我们会挂断此端,这会导致原始文件完成并指向其action属性.(我不确定你使用的语言是什么,但这里有一些Rubyish伪代码)

/gather_result


  if params["Digits"] and params["Digits"].empty?
    
  end

/call_complete一旦行动结束,就会被召唤.如果此时呼叫状态为"已完成"或"已应答",则用户已接听电话并正确回应耳语,我们可以挂机.如果是其他任何内容,我们会将呼叫重定向到我们的语音邮件记录器.

/call_complete


  if params["DialCallStatus"] == "completed" or params["DialCallStatus"] == "answered"
    
  else
    The call could not be answered this time, please leave a message
    
  end

最后,您的/record_complete操作可以使用录制URL执行任何操作并挂断电话.

/record_complete


  

这可以通过Twimlets实现,如本博文中所述.如果这有帮助,请告诉我.

推荐阅读
mobiledu2402851203
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有