如何在星号中缓冲DTMF?

问题描述 投票:0回答:1

请考虑以下AGI脚本。其拨号计划条目只是exten => *,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 slave的名称,而只是从pty slave中读取,而不是通过“ WAIT FOR DIGIT”读取。]

所以,有人知道如何修改星号chan_dahdi吗?还是可能有更高的通道层,而不是绑定到特定模块?我应该去哪里看?任何提示...

asterisk agi
1个回答
0
投票

AGI脚本已经具有STDIN,可以为您进行缓冲。

如果您不阅读它,它将在缓冲区中。

您与DTMF相关的问题与AGI或缓冲无关。检查“ DTMF无线电放松”或仅检查中继上的DTMF设置是否正确。

© www.soinside.com 2019 - 2024. All rights reserved.