您当前的位置是:  首页 > 新闻 > 国内 >
 首页 > 新闻 > 国内 >

Asterisk课堂-Timeout 超时设置

2017-01-05 16:36:04   作者:james.zhu   来源:asterisk   评论:0  点击:


\  
  Asterisk拨号规则中支持了多种对系统时间控制的方式,这些方式可以监控用户输入DTMF的时间,或计费环境中的一些时间长度。本章节我们介绍拨号规则中对通道的超时设置。超时简单来说,就是用户在默认的系统超时设置的时间范围内是否收到系统需要的输入参数。如果用户没有在一定时间内没有输入按键DTMF,这样系统需要做一个错误提示来引导用户进行下一步的呼叫流程。
  视频中介绍了几个超时的用法和应该注意到地方:
  今天介绍的超时包括几个方面的内容:超时的语法定义,超时的几种设置方式,Digit超时注意到地方,超时和其他设置之间的配合。
  超时的语法定义比较简单,系统设置了一定的默认值,用户输入在一定时间内输入DTMF,否则进行错误处理。这里的Timeout是针对channel来说的,超时设置包括了Reponse Timeout,Digit Timeout 和Absolute Timeout。以上三中超时设置是针对呼叫通道来说的,完全不同于application 中的timeout
\
  Reponse Timeout,Digit Timeout 和Absolute Timeout的用法。这里我们专门把这三个超时进行一下简单介绍,以便用户可以快速了解这三个超时的不同。Reponse 超时设置是用来检测用户是否在一定时间内输入第一个数字。Digit 超时是系统已经收到了用户输入的数字,等待下一次数字的输入超时时间设置。例如,用户如果想输入62,但是现在用户仅输入了6,系统需要等待数字2 输入。它们中间的等待时间就是Digit Timeout的设置时间。Absolute Timeout 是针对呼叫的整个流程来说,经常使用的场景是对一些呼叫的时长控制,例如我们的计费卡。如果做电话运营的时候,用户电话卡金额的不同会支持不同的时间长度。这样的话,系统可以对其时间进行控制。最后,因为用户需要输入DTMF,所以Asterisk是否完全完整地收到了用户输入的DTMF,这里可能会引起一些问题。例如,我们经常说的IVR不能工作,或者DTMF输入错误。引起这些问题的原因很多,用户需要在实际环境中配合服务器和终端进行设置排查。
\

\

\
  使用 Digit Timeout 时应该注意的问题。我们单独拿出这个功能来提醒用户,因为系统检测到是一个完整的DTMF数字位数,所以在拨号规则设计时一定要避免号码的部分重复,这样的设计思路可能会导致很多错误。例如,图例中我们讨论的,如果用户想拨62,实际上系统里面的分机号码有620和62两个号码。因为拨号规则已经在内存中加载了620和62两种匹配的设置,如果用户拨打62 的时候,系统仍然需要等待用户输入最后一个0。如果用户没有拨0,则进入到62相应的拨号流程;否则会等待0或者通过超时来进行输入判断。这样就可能导致问题的发生。
\
  Timeout 超时设置和其他应用之间可能引起一个系统时间的重新调整。在我们的图例中,如果用户在流程中设置了一个超时的限制,接下来的逻辑如果涉及了时间的重新定义,则最新的时间定义会覆盖以前的设置。如果Waitexten 设置为30,以前的设置为20,则Waitexten 的时间设置会覆盖上面的设置。所以,我们在这里提醒用户,需要注意这个时间的变化,同时还要通过时间的流程测试来验证最后的结果。
\
  在本章节中,我们介绍了超时设置的用法,几个超时设置的区别,还有Digit超时设置应该注意到对方,最后我们还介绍了超时设置和其他应用的时间关联问题。我们希望通过本章节的介绍,让用户可以基本了解超时的概念和使用过程中应该注意到一些容易出错的地方,例如号码设计的重复,时间设置和其他应用的覆盖问题,并且通过自己编写呼叫流程来进一步验证这些时间设置。 

相关阅读:

专题