Asterisk 如何在星号中缓冲DTMF?

Asterisk 如何在星号中缓冲DTMF?,asterisk,agi,Asterisk,Agi,考虑以下AGI脚本。它的拨号计划条目只是ext=>*,1,AGI(test.AGI)。使用模拟卡TDM410P #!/bin/sh read REPLY; while [ "$REPLY" ]; do read REPLY done #sleep 5 echo ANSWER; read REPLY #sleep 5 while [ 1 ]; do echo WAIT FOR DIGIT -1; read REPLY echo $REPLY >>/tmp/agi done

考虑以下AGI脚本。它的拨号计划条目只是
ext=>*,1,AGI(test.AGI)
。使用模拟卡TDM410P

#!/bin/sh
read REPLY; while [ "$REPLY" ]; do
  read REPLY
done
#sleep 5
echo ANSWER; read REPLY
#sleep 5
while [ 1 ]; do
  echo WAIT FOR DIGIT -1; read REPLY
  echo $REPLY >>/tmp/agi
done
问题是:我把手机从挂钩上取下,然后快速按
*12345
;结果是前一个或两个数字有时会丢失(即未记录到
/tmp/agi

如何使星号缓冲DTMF数字,直到它们被读取


编辑

我想我需要在通道中创建伪终端(因为它可以缓冲数据),并在解码后立即将dtmf数字写入其中,并在通道变量中设置伪终端从机的名称。然后AGI脚本将从AGI初始化数据中获取pty从机的名称,并仅从pty从机读取,而不是通过“等待数字”读取


那么,有人知道如何破解星号
chan_dahdi
?或者可能有一个更高的通道层,而不是绑定到特定的模块?我应该去哪里看?任何提示…

AGI脚本已经有标准输入,可以为您进行缓冲

如果您没有阅读它,它将在缓冲区中

您的DTMF问题与AGI或缓冲无关。检查“DTMF Radio Relax”(双音多频收音机放松)或仅检查中继线上的双音多频设置是否正确