Asterisk-Java 経由でマネージャーとして Asterisk にアクセスする Java アプリがあります。このアプリにはダイヤラー インターフェイスがあり、これを使用して、番号文字列をダイヤルしたり、sip.conf で定義された内線番号に 1 桁を再生したりできます。現在、このダイヤラーから (AJ PlayDtmfAction を使用して) 数字を MeetMe 会議に送り、MeetMe の要求に応じて PIN を入力する方法を見つけようとしています。私の DialPlan には、confRoom 1024 をサポートする ext-meetme コンテキストがあります...
>[ Context 'ext-meetme' created by 'pbx_config' ]
> '1024' => 1. Macro(user-callerid,) [pbx_config]
> 2. Set(MEETME_ROOMNUM=1024) [pbx_config]
> 3. Set(MAX_PARTICIPANTS=2) [pbx_config]
> 4. Set(MEETME_MUSIC=${MOHCLASS}) [pbx_config]
> 5. Gosub(sub-record-check,s,1(conf,1024,always))
>[pbx_config]
> 6. GotoIf($["${DIALSTATUS}" = "ANSWER"]?READPIN)
>[pbx_config]
> 7. Answer() [pbx_config]
> 8. Wait(1) [pbx_config]
> 9. Set(PINCOUNT=0) [pbx_config]
> [READPIN] 10. Read(PIN,enter-conf-pin-number,,,,) [pbx_config]
>
><THIS IS WHERE I WANT TO INJECT A DTMF STRING>
>
> 11. GotoIf($[x${PIN} = x123]?USER) [pbx_config]
> 12. GotoIf($[x${PIN} = x321]?ADMIN) [pbx_config]
> 13. Set(PINCOUNT=$[${PINCOUNT}+1]) [pbx_config]
> 14. GotoIf($[${PINCOUNT}>3]?h) [pbx_config]
> 15. Playback(conf-invalidpin) [pbx_config]
> 16. Goto(READPIN) [pbx_config]
> [ADMIN] 17. Set(MEETME_OPTS=aAoTqcIMsr) [pbx_config]
> 18. Goto(STARTMEETME,1) [pbx_config]
> [USER] 19. Set(MEETME_OPTS=oTqcIMsr) [pbx_config]
> 20. Goto(STARTMEETME,1) [pbx_config]
MeetMe の PIN を再生する必要がある場所が表示されます。ここで [READPIN] が何を意味するのかわかりません。Asterisk CLI 冗長モードをオンにすると、上記の 10 番に到達することがわかります。次にタイムアウトが発生し、アスタリスクはユーザーが数字を入力しなかったことを示します。
問題は、数字を再生する正しい宛先 channelID を PlayDtmfAction に適切に定義できないことです。機能するのは、SIP/100-00034bc2 のような実際の内線番号に数字を再生することです。MeetMe にはそのようなチャネルはありません。ダイヤルプランのこの時点で発信チャネルの情報を照会すると、宛先が 1024@from-internal:1 と表示されます。私は PlayDtmfAction でそれを試みますが、アスタリスクはエラーを返します。1024@ext-meetme、Local/1024、Local/1024@ext-meetme:1 なども試しました。
AGI の使用については聞いたことがありますが、MeetMe などのアプリをブロックするために AGI を使用するべきではないとも読みました。AGI を使えるなら、その方法を学びたいです。
問題があれば、FreePBX によって構成されたシステムを使用します。私のアプリは FreePBX とは別のものです。
助けていただければ幸いです。リクエストされた情報を喜んで入手します。
ありがとう!
マサチューセッツ州のグレッグ