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 を利用できるようにすることが課題です。
コメントを残す