SIP処理の復習

(株)HIRO ICT 研究所の「空間知能化システム」で使用するSIP処理の復習を行います。

SIP処理の復習の概要

空間知能化サーバ側

AjaxApisController.php
番号 項目 説明
1 発呼処理(ajax_dial())
  1. 「管理サーバ」から「ajax_dial()」メソッドが呼ばれる。この時、内線番号とXMLのURLが指定される。
  2. 「ajax_dial()」メソッドでは、指定された内線番号とXMLのURLをDB(Dialog)に書き込み、そのレコード番号を得る。この時、「status=1」に設定する。
  3. 「ajax_dial()」メソッドでは、指定された内線番号に発呼する(originate)。
  4. 「ajax_dial()」メソッドでは、発呼時の「CALLER_ID」に「iot=DBのレコード番号」を埋め込む。
  5. 「管理サーバ」にレスポンスを返す。
DialogsController.php
番号 項目 説明
1 デーモン処理(ajax_cron_query())
  1. 「デーモン」から「ajax_cron_query()」メソッドが呼ばれる。
  2. 「ajax_cron_query()」メソッドでは、DB(Dialog)を調べ、現時点より1時間以内のレコードで「status=1」のものを探す。
  3. 上記のレコードが見つかると、端末は「AjaxApisController.php」の発呼処理を受け取っていないと判断して、「AjaxApisController.php」と同様の発呼処理を行う。
2 端末からの発呼受信確認処理(ajax_invite_ok())
  1. 端末は、発呼処理を受け取ると「空間知能化サーバ」のURLの「/misato/dial_logs/ajax_invite_ok/」で「ajax_invite_ok()」メソッドを呼び出す。
  2. この時、パラメータとして発呼時に「CALLER_ID」の「iot=XXXX」のXXXである「dilog_id」(レコード番号)を受け取る。
  3. 「ajax_invite_ok()」メソッドでは、当該内線番号のDB(Dialog)のレコードを「status=0」(処理完了)にする。
  4. 端末には、応答を返す。

端末側

M2mSipManager.java
番号 項目 説明
1 着信処理(incoming_call_proc())
  1. 「IncomingCallReceiver」からSIP着信時に「incoming_call_proc()」メソッドが呼ばれる。
  2. 「incoming_call_proc()」メソッドでは、「CALLER_ID」から「iot=XXXX」と取り出す。XXXXはDB(Dialog)のレコード番号である。
  3. Constants.report_invite_ok_to_ai_server(diallog_id)メソッドを使用して、空間知能化サーバに着信成功を報告する。
  4. この時、diallog_id=XXXXをパラメータとして、空間知能化サーバに伝える。
2 端末からの発呼受信確認処理(ajax_invite_ok())
  1. 端末は、発呼処理を受け取ると「空間知能化サーバ」のURLの「/misato/dial_logs/ajax_invite_ok/」で「ajax_invite_ok()」メソッドを呼び出す。
  2. 「ajax_invite_ok()」メソッドでは、当該内線番号のDB(Dialog)のレコードを「status=0」(処理完了)にする。
  3. 端末には、応答を返す。
Constant.java(report_invite_ok_to_ai_server)
番号 項目 説明
1 着信成功を報告(report_invite_ok_to_ai_server())
  1. XX「IncomingCallReceiver」からSIP着信時に「incoming_call_proc()」メソッドが呼ばれる。
  2. XX「incoming_call_proc()」メソッドでは、「CALLER_ID」から「iot=XXXX」と取り出す。XXXXはDB(Dialog)のレコード番号である。
  3. XX CConstants.report_invite_ok_to_ai_server(diallog_id)メソッドを使用して、空間知能化サーバに着信成功を報告する。
  4. XX この時、diallog_id=XXXXをパラメータとして、空間知能化サーバに伝える。
Crontabコマンド(クーロンの定義)

test.shの内容

#echo "Hello World!"
#wget --spider -nv --timeout 60 -t 1 http://localhost/misato/cron_test.php
#wget --spider -nv --timeout 60 -t 1 http://localhost/misato/schedules/ajax_cron_query
wget --spider -nv --timeout 60 -t 1 http://localhost/misato/dial_logs/ajax_cron_query
番号 項目 説明
1 現状のクーロン定義

3分おきにtest.shを実行

crontab -l
*/3 * * * * /var/lib/asterisk/agi-bin/test.sh
1 新しいクーロン定義

10分おきにtest.shを実行

crontab -l
*/10 * * * * /var/lib/asterisk/agi-bin/test.sh

改修内容

SIP発呼処理の改修

①現在支援データ送信をHIROサーバーで3分間隔で最大1時間再送リトライしていますが、これを10分間隔で最大30分に変更する。

DialogsController.phpの修正

修正前

110		$end_date->modify('-60 minute');

修正後(2018/3/25)

110		//$end_date->modify('-60 minute');
111		// 60分を30分に短縮(2018/3/22)
112		$end_date->modify('-30 minute');
crontabによるクーロン処理の変更

修正前

[root@localhost ~]# crontab -l
*/3 * * * * /var/lib/asterisk/agi-bin/test.sh

修正後(2018/3/25):crontab -eで変更した。

[root@localhost ~]# crontab -l
*/10 * * * * /var/lib/asterisk/agi-bin/test.sh

実証実験で対象者が増えた場合にリトライによって支援が重なりandroidアプリが止まる確率を下げる狙いがあります。

内線番号の増加

HIROサーバーに設定されている内線回線の数を増やす。今、実験用に12回線あります(4001-4012)が30回線まで増やしたい。

空間知能化サーバの「SIPサーバ管理」→「内線電話の一覧」→「内線電話の登録」

内線番号4013~4030を追加する。(2018/3/25追加)



お花畑2