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 の中身を変えてください。