WebRTC を利用した Asterisk の SIP クライアント

WebRTC を利用して SIP アカウント (内線) にログインしていきます。

Asterisk の内線設定

WebRTC を利用できるようにするため、Asterisk (FreePBX) の内線 (Chan_SIP) を設定します。

FreePBX

Transport
「WS Primary (全て – WS プライマリ)」または「WS Only (WS のみ)」
Enable AVPF
「Yes (はい)」
Enable ICE Support
「Yes (はい)」
Enable DTLS
「Yes」
DTLS Verify
「Yes」

sip.conf

transport=ws,udp
avpf=yes
icesupport=yes
dtlsenable=yes
dtlsverify=no

WebRTC を利用する SIP クライアント SIP.js

WebRTC を使った SIP クライアントには SIP.js を使用します。

SIP.js を script タグでインクルードした状態で、次の JavaScript を入れると、着信 (‘invite’) イベント時にコンソールへ着信のメッセージを書き出します。

var ua = new SIP.UA({
    uri: '(内線番号)@(Asterisk の IP アドレス)',
    wsServers: 'ws://(Asterisk の IP アドレス):8088/ws',
    stunServers: [],
    authorizationUser: '(内線番号)',
    password: '(内線の Secret)',
    hackIpInContact: true,
    rtcpMuxPolicy: 'negotiate',
}).on('invite', function(session) {
    console.log('Call from ' + session.remoteIdentity.displayName);
});

SIP.UA オブジェクトには着信 (‘invite’) だけでなく接続 (‘connected’) や切断 (‘disconnected’) などのイベント、発信 (invite) などのメソッドもあります。

次の課題

内線の SIP Channel ドライバーは Chan_SIP を使用しましたが、Chan_SIP は複数のクライアントからログインすると、最後にログインしたクライアントにのみ着信通知をするようです。
そのため、Chan_SIP ではなく Chan_PJSIP を使用した内線で SIP.js を利用できるようにすることが課題です。

Comments

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です