0

Python と pyst を使用して DTMF をアスタリスクに送信しています。コードは次のとおりです。

def playDTMF(self, channel, digit):
        print "DTMF: Sending %s to %s" % (digit, channel)
        response = self.manager.send_action({
            "Action" : "PlayDTMF",
            "Channel" : channel,
            "Digit" : digit
        })
        print "DTMF: %s - %s" % (response['Response'], response['Message'])

スクリプトの出力は良好です。

DTMF: Sending 1 to SIP/S3bc9c3c-00000081
DTMF: Success - DTMF successfully queued

しかし、アスタリスクは次のように反応します。

[Jul  2 17:48:53] DEBUG[6967] manager.c: Running action 'PlayDTMF'
[Jul  2 17:48:53] DEBUG[6967] channel.c: Set channel SIP/S3bc9c3c-00000081 to write format slin
[Jul  2 17:48:53] DEBUG[6967] channel.c: Scheduling timer at (50 requested / 50 actual) timer ticks per second
[Jul  2 17:48:53] DEBUG[6967] channel.c: Thread 140629726328576 Blocking 'SIP/S3bc9c3c-00000081', already blocked by thread 140628353554176 in procedure ast_
waitfor_nandfds

興味深いことに、これは SIP チャネルでのみ発生します。「ローカル」チャネルでは、期待どおりに動作します。

[Jul  2 18:00:07] DTMF[7951]: channel.c:4083 __ast_read: DTMF begin '1' received on Local/901@AC000001-19ca;1
[Jul  2 18:00:07] DTMF[7951]: channel.c:4093 __ast_read: DTMF begin passthrough '1' on Local/901@AC000001-19ca;1

SIP チャネルで DTMF を適切に再生するにはどうすればよいですか?

UPD

アスタリスク バグトラッカーでこれを見つけました: https://issues.asterisk.org/jira/browse/ASTERISK-13224

DTMF を SIP チャネルに送信すると、電話機はそれを自分で再生するだけで、Asterisk には届かないようです。それに対処する方法はありますか?

4

2 に答える 2