Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away