Asterisk chan websocket
Asteriskの新しいチャネルとしてWebsocketチャネルが追加された。
使用可能なバージョンは 23.0.0,22.6,0, 21.11.0, 20.16.0 のそれぞれ以降のバージョン。メジャーバージョンによる追加ではなく、マイナーバージョンの途中から追加されているので注意。
従来からあるPjSIPのws/wssではなく、チャネルドライバとしてのWebsocket。
関連するモジュール
chan_websocket
res_websocket_client
*CLI> core show channeltype WebSocket
-- Info about channel driver: WebSocket --
Device State: no
Presence State: no
Indication: no
Transfer : no
Capabilities: (codec2|g723|ulaw|alaw|gsm|g726|g726aal2|adpcm|slin|slin12|slin16|slin24|slin32|slin44|slin48|slin96|slin192|lpc10|g729|speex|speex16|speex32|ilbc|g722|siren7|siren14|g719|opus|jpeg|png|h261|h263|h263p|h264|h265|mpeg4|vp8|vp9|red|t140|t38|silk8|silk12|silk16|silk24)
Digit Begin: no
Digit End: yes
Send HTML : no
Image Support: no
Text Support: no
*CLI> module show like res_websocket_client.so
Module Description Use Count Status Support Level
res_websocket_client.so WebSocket Client Support 2 Running core
注意点
Websocket接続ではあるものの、RTPと同様に20m秒のペーシング(1フレームあたり20m秒)の送出間隔を守ること。AsteriskからWebsocketへの送出はこの20m秒フレームで送られるが、外部からAsteriskに送りつける場合にも20m秒を守る必要がある。これが乱れると音声の品質低下、あるいは再生されないといった問題が発生する。この問題は割とハマるので注意。
設定
AsteriskからWebsocketに対して発信する場合の例。
websocket_client.conf に以下のように記述する。"ws-connection"が識別名。
[ws-connection1] type = websocket_client uri = ws://127.0.0.1:8765 protocols = media connection_type = per_call_config connection_timeout = 500 reconnect_interval = 500 reconnect_attempts = 5 tls_enabled = no