LoginSignup
0
0

More than 3 years have passed since last update.

AsteriskのVoicemailメッセージをODBC経由でMySQLに保存する

Last updated at Posted at 2019-06-10

AsteriskのVoicemailメッセージをODBC経由でMySQLに保存する

とりあえず、memo書きなので時期に補足します。

環境

  • FreeBSD 12.0R
  • Asterisk16 16.4.0
  • MySQL 5.6

Asteriskの導入時に注意すること

FreeBSDのPackagesやportsではVoicemailメッセージの保存先にODBCを利用するになっていないため、
portsを利用し、コンパイルオプションを変更して対応する

/usr/ports/net/asterisk16/Makefile.
# post-configureセクションの最後に追記
post-configure:
        #.........
        @cd ${WRKSRC} && ./menuselect/menuselect --enable ODBC_STORAGE menuselect.makeopts

テーブルの作成

データベースに下記のテーブルを作成する

CREATE TABLE `voicemessages` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `msgnum` int(11) NOT NULL DEFAULT '0',
  `dir` varchar(80) DEFAULT '',
  `context` varchar(80) DEFAULT '',
  `macrocontext` varchar(80) DEFAULT '',
  `callerid` varchar(40) DEFAULT '',
  `origtime` varchar(40) DEFAULT '',
  `duration` varchar(20) DEFAULT '',
  `mailboxuser` varchar(80) DEFAULT '',
  `mailboxcontext` varchar(80) DEFAULT '',
  `recording` longblob,
  `flag` varchar(128) DEFAULT '',
  `msg_id` varchar(40) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `dir` (`dir`)
) ENGINE=InnoDB;

ODBC向けのMySQL Connectorを導入

# pkg install mysql-connector-odbc-unixodbc-mysql56

各種設定

/usr/local/etc/odbcinst.ini
[MySQL]
Description=ODBC for MySQL
Driver=/usr/local/lib/libmyodbc5w.so
UsageCount=20004
#Trace=yes
#TraceFile=/tmp/mysql.log
/usr/local/etc/odbc.ini
[asterisk]
; odbcinst.iniの[MySQL]と合わせる
Driver=MySQL
SERVER=127.0.0.1
PORT=3306
DATABASE=asterisk
USER=UserID
PASSWORD=Password
/usr/local/etc/asterisk/res_odbc.conf
[asterisk]
enabled => yes
; odbc.iniの[asterisk]と合わせる
dsn => asterisk
pre-connect => yes
/usr/local/etc/asterisk/voicemail.conf
; res_odbc.confの[asterisk]と合わせる
odbcstorage=asterisk
odbctable=voicemessages

動作確認

  • odbc.iniの設定が出来ていることを確認
    セクション名が表示されればOK
# odbcinst -s -q
  • ODBC経由でMySQLに接続出来ることを確認
    1が返ってくればOKです。上手く接続出来なければ何かしらのエラーが表示されると思います。
# echo "select 1" | isql -v asterisk
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> +---------------------+
| 1                   |
+---------------------+
| 1                   |
+---------------------+
SQLRowCount returns 1
1 rows fetched
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0