Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

Asterisk Mysql dialplan

0

Пожалуйста помогите с проблемой. Астериск не подключается к Mysql из диалплана. Версия астериска:

srv-aster-01*CLI> core show version
Asterisk 1.8.19.0 built by root @ srv-aster-01 on a x86_64 running Linux on 2012-12-17 12:52:07 UTC
srv-aster-01*CLI> module show like app_mysql.so 
Module                         Description                              Use Count 
app_mysql.so                   Simple Mysql Interface                   0         
1 modules loaded

Вот extensions.conf

exten => 30,1,MYSQL(Connect connid 127.0.0.1 asteriskpbx **** subsbs)
exten => 30,n,MYSQL(Query resultid ${connid} SELECT\ subscriber_msisdn\ from\ subsbs.debts \ where\ id=1)
exten => 30,n,MYSQL(Fetch fetchid ${resultid} test1)
exten => 30,n,NoOp(Status ${MYSQL_STATUS})
exten => 30,n,NoOp(Result fetch ${test1})
exten => 30,n,NoOp(Result query ${resultid})
exten => 30,n,MYSQL(Clear ${resultid})
exten => 30,n,MYSQL(Disconnect ${connid})
exten => 30,n,NoOp(Status ${MYSQL_STATUS})
exten => 30,n,NoOp(Result fetch ${test1})
exten => 30,n,NoOp(Result query ${resultid})

Вот вывод CLI

  == Using SIP RTP CoS mark 5
    -- Executing [30@out:1] MYSQL("SIP/100-00000011", "Connect connid 127.0.0.1 asteriskpbx frogs-pNKJaswMd subsbs") in new stack
    -- Executing [30@out:2] MYSQL("SIP/100-00000011", "Query resultid 7 SELECT\ subscriber_msisdn\ from\ subsbs.debts \ where\ id=1") in new stack
    -- Executing [30@out:3] MYSQL("SIP/100-00000011", "Fetch fetchid  test1") in new stack
    -- Executing [30@out:4] NoOp("SIP/100-00000011", "Status -1") in new stack
    -- Executing [30@out:5] NoOp("SIP/100-00000011", "Result fetch ") in new stack
    -- Executing [30@out:6] NoOp("SIP/100-00000011", "Result query ") in new stack
    -- Executing [30@out:7] MYSQL("SIP/100-00000011", "Clear ") in new stack
    -- Executing [30@out:8] MYSQL("SIP/100-00000011", "Disconnect 7") in new stack
    -- Executing [30@out:9] NoOp("SIP/100-00000011", "Status 0") in new stack``
    -- Executing [30@out:10] NoOp("SIP/100-00000011", "Result fetch ") in new stack
    -- Executing [30@out:11] NoOp("SIP/100-00000011", "Result query ") in new stack
    -- Auto fallthrough, channel 'SIP/100-00000011' status is 'UNKNOWN'

При этом я могу залогиниться в Mysql от этого пользователя:

asteriskpbx@srv-aster-01 etc]$ mysql -h 127.0.0.1 -u asteriskpbx -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 280
Server version: 5.5.39 MySQL Community Server (GPL) by Remi 
mysql> SELECT subscriber_msisdn FROM subsbs.debts where id=1;
+-------------------+
| subscriber_msisdn |
+-------------------+
| 333               |
+-------------------+
1 row in set (0.00 sec)

РЕШЕНИЕ

Включил дебаг из которого видно что ошибка в синтаксисе SQL запроса:

  == Using SIP RTP CoS mark 5
    -- Executing [30@out:1] MYSQL("SIP/100-00000003", "Connect connid 127.0.0.1 asteriskpbx frogs-pNKJaswMd subsbs") in new stack
    -- Executing [30@out:2] MYSQL("SIP/100-00000003", "Query resultid 1 SELECT\ subscriber_msisdn\ from\ subsbs.debts \ where\ id=1") in new stack
[Sep  5 13:15:00] WARNING[40574]: app_mysql.c:395 aMYSQL_query: aMYSQL_query: mysql_query failed. Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\ subscriber_msisdn\ from\ subsbs.debts \ where\ id=1' at line 1
    -- Executing [30@out:3] MYSQL("SIP/100-00000003", "Fetch fetchid  test1") in new stack
[Sep  5 13:15:00] WARNING[40574]: app_mysql.c:496 aMYSQL_fetch: aMYSQL_fetch: missing some arguments
    -- Executing [30@out:4] NoOp("SIP/100-00000003", "Status -1") in new stack
    -- Executing [30@out:5] NoOp("SIP/100-00000003", "Result fetch ") in new stack
    -- Executing [30@out:6] NoOp("SIP/100-00000003", "Result query ") in new stack
    -- Executing [30@out:7] MYSQL("SIP/100-00000003", "Clear ") in new stack
[Sep  5 13:15:00] WARNING[40574]: app_mysql.c:194 find_identifier: Identifier 0, identifier_type 2 not found in identifier list
[Sep  5 13:15:00] WARNING[40574]: app_mysql.c:510 aMYSQL_clear: Invalid result identifier 0 passed in aMYSQL_clear
    -- Executing [30@out:8] MYSQL("SIP/100-00000003", "Disconnect 1") in new stack
    -- Executing [30@out:9] NoOp("SIP/100-00000003", "Status 0") in new stack
    -- Executing [30@out:10] NoOp("SIP/100-00000003", "Result fetch ") in new stack
    -- Executing [30@out:11] NoOp("SIP/100-00000003", "Result query ") in new stack

Переделал запрос в диалплане на

exten => 30,n,MYSQL(Query resultid ${connid} SELECT subscriber_msisdn FROM subsbs.debts where id=1)

и всё заработало! Причина в том что начиная с версии 1.8 поддерживаются нормальные sql запросы, без слэшей.

удалить закрыть спам изменить тег редактировать

спросил 2014-09-05 13:23:32 +0400

minskiybatman Gravatar minskiybatman
11 1 3

обновил 2014-09-05 14:48:41 +0400

1 Ответ

0
  1. Включите дебаг в астериске и посмотрите что отвечает вам MySQL:

    asterisk -rvvvvvddddddd

  2. Включите лог запросов MySQL и посмотрите что шлет ему Asterisk.

ссылка удалить спам редактировать

ответил 2014-09-05 13:33:43 +0400

switch Gravatar switch
8334 11 7 91
http://lynks.ru/

Comments

Спасибо за совет, в дебаг режиме сразу увидел в чем проблема. Выше описал решение и причину

minskiybatman ( 2014-09-05 14:47:25 +0400 )редактировать

Ну вот и хорошо!

switch ( 2014-09-05 15:51:53 +0400 )редактировать

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку

подписаться на rss ленту новостей

Статистика

Задан: 2014-09-05 13:23:32 +0400

Просмотрен: 694 раз

Обновлен: Sep 05 '14

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.