AsteriskNow も6.12となり、入れ直しをしましたので、かけてきた相手の名前を MS-SQL から引いてきて電話番号に表示する PHP を作り直しました。
1)libiconv のダウンロードとコンパイル、インストール
# cd /usr/local/src/ # wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz # cd libiconv-1.14 # ./configure && make && make install
設定ファイルの書き出し
# vi /etc/freetds.conf
内容は [global]の末尾に
# add batake charset = cp932 client-charset = cp932
ファイルの末尾に
[DBアクセスセット名] host = MS-SQLのサーバー名 port = 1433 tds version = 9.0 charset = sjis client charset = UTF-8 language = japanese
3) MS-SQL アクセス試験
# tsql -S DBアクセスセット名 -U DBユーザー名 -P 'DBパスワード'
結果が
1>
みたいになったら OK なので、
1>exit
で抜ける。
4) PHP の必要モジュールのインストール
# yum install php-mssql php-mbstring # vi /etc/php.ini
php の [mbstring] の内容
mbstring.language = Japanese mbstring.internal_encoding = UTF-8 mbstring.http_input = auto mbstring.http_output = UTF-8 mbstring.encoding_translation = On mbstring.substitute_character = none;
5) apache の再起動
# service httpd restart
6) 実行ファイル作成
# cd /var/www/html/ # mkdir phonebook # cd phonebook/ # vi askname.php
askname.phpファイルの内容は
<?php ob_start(); $db = mssql_connect ("MS-SQLのサーバー名", "DBユーザー名", "DBパスワード"); $TelNum = $_GET['tel']; $Enc = $_GET['enc']; mssql_select_db("データベース名",$db); $query = "select * from テーブル名 WHERE replace(電話番号のフィールド名,'-','') LIKE '%".$TelNum."%'"; $res = mssql_query($query,$db); $i = 0; $Ans = ""; while($row = mssql_fetch_array($res)){ if ($i == 0) { switch ($Enc) { case 'SJIS': $Kana = rtrim($row['電話番号の主のフリガナのフィールド名']); break; case 'sjis': $Kana = rtrim($row['電話番号の主のフリガナのフィールド名']); break; case 'EUC': $Kana = mb_convert_encoding(rtrim($row['電話番号の主のフリガナのフィールド名']), "EUC","SJIS"); break; case 'euc': $Kana = mb_convert_encoding(rtrim($row['電話番号の主のフリガナのフィールド名']), "EUC","SJIS"); break; default: $Kana = mb_convert_encoding(rtrim($row['電話番号の主のフリガナのフィールド名']), "UTF-8","SJIS"); } $Kana = mb_convert_encoding(rtrim($row['電話番号の主のフリガナのフィールド名']), "UTF-8","SJIS"); $PtID = rtrim($row['電話番号の主のID']); $Ans = $PtID.$Kana; } $i = $i +1; } switch ($i) { case 0: $Ans = $TelNum; break; case 1: break; default: $Ans = $Ans."etc".strval($i - 1); } echo $Ans; mssql_free_result($res); mssql_close(); ?>;
7) 権限の設定
# chmod u+rx phonebook/*.php # chown asterisk:asterisk -R phonebook
アクセス方法は、http://asteriskサーバーのアドレス/phonebook/askname.php?tel=電話番号&enc=エンコード方法
( ShiftJIS なら enc=SJIS もしくは enc=sjis、EUCなら enc=EUC もしくは enc= euc &以降をつけないかその他なら UTF-8 )
FreePBX12の CallerID Lookup Souces では、
Source type: HTTP
Path:/phonebook/askname.php
Query:tel=[NUMBER]&enc=SJIS
(SANYO SIP-2100 で SiftJIS で表示させるため)
となりました。
かけてきた相手の ID と名前を表示させているので、名前だけ取れればいいとか、情報を変更する場合、
switch ($Enc) { case 'SJIS': $Kana = rtrim($row['対象のフリガナのフィールド名']); break; case 'sjis': $Kana = rtrim($row['対象のフリガナのフィールド名']); break; case 'EUC': $Kana = mb_convert_encoding(rtrim($row['対象のフリガナのフィールド名']), "EUC","SJIS"); break; case 'euc': $Kana = mb_convert_encoding(rtrim($row['対象のフリガナのフィールド名']), "EUC","SJIS"); break; default: $Kana = mb_convert_encoding(rtrim($row['対象のフリガナのフィールド名']), "UTF-8","SJIS"); } $Kana = mb_convert_encoding(rtrim($row['対象のフリガナのフィールド名']), "UTF-8","SJIS"); $PtID = rtrim($row['対象のID']); $Ans = $PtID.$Kana;
の部分を変更して、$Ans の中身を変えてください。