2

問題: VirtualBox で asterisk 2.0 サーバーを実行している AsteriskNow を使用しています。また、ODBC モジュールを使用して Asterisk を MySQL データベースに接続したいと考えています。しかし、それは失敗します。asterisk*CLI> odbc show で起動すると、コマンド プロンプトに「No such command ODBC SHOW」と表示されます

私の目的: アスタリスクで ODBC を構成して、アスタリスクのダイヤルプランから直接かつ動的に MySQL にアクセスします。

私がしたこと: VirtualBox に AsteriskNow をインストールしました。アスタリスクのバージョンは 2.0 で、CentOS バージョン 5.8 最終版です。最初に関連する Linux RPM をインストールしました。

yum -y install unixODBC-devel
yum -y install libdbi-dbd-mysql
yum -y install mysql-connector-odbc

私の詳細構成ファイルは次のとおりです。

/etc/odbc.ini

[asterisk-connector]
Description           = MySQL connection to 'asterisk' database
Driver                = MySQL
Database              = asterisk
Server                = localhost
UserName              = root        
Password              = mypassword
Port                  = 3306
Socket                = /var/lib/mysql/mysql.sock

/etc/odbcinst.ini

# Driver from the mysql-connector-odbc package
# Setup from the unixODBC-libs package
[MySQL]
Description = ODBC for MySQL
Driver      = /usr/lib/libmyodbc3_r.so
Setup       = /usr/lib/libodbcmyS.so
;Driver64   = /usr/lib64/libmyodbc3_r.so
;Setup64        = /usr/lib64/libodbcmyS.so
FileUsage   = 1

/etc/アスタリスク/res_odbc.conf

[asterisk]
enabled=>yes
dsn=>asterisk-connector
;dsn=>asterisk
username=>root
password=>mypassword
pooling=>no
limit=>0
pre-connect=>yes

「isql」コマンドを使用してMySQLデータベースに接続すると、正常に動作します ここに画像の説明を入力

しかし、CLI でコンソールを起動したときに、コマンドodbc showを入力します。No SUCH COMMAND "odbc show " が表示されます

ここに画像の説明を入力

そして、私はここで混乱していて、それを解決する方法がわかりません。私はそれをグーグルで検索し、 res_odbc.so モジュールをロードすることで解決することを誰かが推奨していることを見つけました。したがって、ファイルmodules.confを調べて、それらの変更をファイルに追加します

autoload=yes
preload => res_odbc.so
preload => res_config_odbc.so

変更後の完全なファイルは次のとおりです" /etc/asterisk/modules

;
; Asterisk Module Loader configuration file
;
;

[modules]
autoload=yes
;
; Any modules that need to be loaded before the Asterisk core has been
; initialized (just after the logger has been initialized) can be loaded
; using 'preload'. This will frequently be needed if you wish to map all
; module configuration files into Realtime storage, since the Realtime
; driver will need to be loaded before the modules using those configuration
; files are initialized.
;
; An example of loading ODBC support would be:
preload => res_odbc.so
preload => res_config_odbc.so
;
; As FreePBX is using Local as the channel for queue members we need to make sure
; that pbx_config.so and chan_local.so are preloaded. If not, queue members
; will be marked as invalid until app_queue is reloaded. 
preload => pbx_config.so
preload => chan_local.so
;
; Uncomment the following if you wish to use the Speech Recognition API
;preload => res_speech.so
;
; If you want, load the GTK console right away.  
; KDE console is obsolete and was removed from Asterisk 2008-01-10
;
noload => pbx_gtkconsole.so
;load => pbx_gtkconsole.so
noload => pbx_kdeconsole.so
;
; Intercom application is obsoleted by
; chan_oss.  Don't load it.
;
noload => app_intercom.so
;
; DON'T load the chan_modem.so, as they are obsolete in * 1.2

noload => chan_modem.so
noload => chan_modem_aopen.so
noload => chan_modem_bestdata.so
noload => chan_modem_i4l.so

; Trunkisavail is a broken module supplied by Trixbox
noload => app_trunkisavail.so

; Ensure that format_* modules are loaded before res_musiconhold
;load => format_ogg_vorbis.so
load => format_wav.so
load => format_pcm.so

; format_au.so is removed from Asterisk 1.4 and later, remove ; to enable
;load => format_au.so

; This isn't part of 'Asterisk' iteslf, it's part of asterisk-addons. If this isn't
; installed, asterisk will fail to start. But it does need to go here for native MOH
; to work using mp3's. 
;   Note that on a system with a high number of calls, using a compressed audio format for
;   musiconhold takes CPU resources. Converting these files to ulaw/alaw makes the job
;   much easier for your CPU.
load => format_mp3.so
load => res_musiconhold.so
;
; Load either OSS or ALSA, not both
; By default, load no console driver
;
noload => chan_alsa.so
noload => chan_oss.so
;
noload => app_directory_odbcstorage.so 
noload => app_voicemail_odbcstorage.so 

これを行った後、CLI コンソールに戻って res_odbc.so をリロードしました。しかし、res_odbc.so が見つかりませんでした。 ここに画像の説明を入力

ODBC 接続の問題を解決するためのヒントが必要です。

4

5 に答える 5

3

次のことを試してください:

asterisk -rvvv
module unload res_odbc.so
module load res_odbc.so

出力を参照してください。

于 2012-10-03T15:01:54.830 に答える
2

AsteriskNOW 環境で、Asterisk に ODBC リソースを提供するモジュールである を取得するには、パッケージをインストールres_odbc.soする必要があります。asterisk-odbc

(packages.asterisk.org リポジトリに関して AsteriskNOW インストールがどのように構成されているかによっては、asterisk18-odbc代わりにまたは同様のバージョンのパッケージが必要になる場合があります。)

res_odbc.so(このファイルをチェックインして)持っていて/usr/lib/asterisk/modules、まだ正しくロードされない場合は、Asterisk のログに/var/log/asterisk関連するメッセージをチェックして、res_odbc詳細を確認してください。

于 2012-10-31T15:37:03.357 に答える
0

isql コマンドを使用すると、エラー (不明な属性 UserName) が返されることに注意してください。

この /etc/odbc.ini ファイルを試してください:

[asterisk-connector]
Description = MySQL connection to 'asterisk' database
Driver      = MySQL
DATABASE    = asterisk
SERVER      = localhost
USER        = root
PASSWORD    = mypassword
PORT        = 3306
Option      = 3

CentOS で有効かどうかはわかりませんが、Debian では動作させるためにアスタリスクを再コンパイルして menuselect を実行する必要がありました。これを行うには、Asterisk フォント ディレクトリに移動します。

$ ./configure

$ make clean

$ make menuselect

次のモジュールがチェックされていることを確認してください。

[*] cdr_odbc

[*] cdr_adaptive_odbc

[*] func_odbc

[*] func_realtime

[*] pbx_realtime

[*] res_config_odbc

[*] res_odbc

その後:

$ sudo make install

お役に立てば幸いです。

于 2012-10-11T20:29:35.590 に答える
0

「make menuselect」チェックを行うときに、重要なモジュールを追加するのを忘れているようです。

また、リレーショナル データベースとして mysql を使用している場合は、記述した構成ファイル (/etc/asterisk/res_odbc.conf) で "limit=>1" を設定する必要があることが非常に重要です。行をコメントするだけです。orreilly ガイド ( http://ofps.oreilly.com/titles/9781449332426/asterisk-DB.html ) に従っている場合は、正誤表 ( http://oreilly.com/catalog/errata.csp?isbn= 9780596517342 )。

于 2013-10-17T12:54:06.483 に答える