При выборке с базы возвращаемый результат постоянно 2. Не могу найти, в чём проблема. Вот extensions.conf:
exten => 111,1,MYSQL(Connect connid localhost ast_user password asterisk)
exten => 111,n,MYSQL(Query resultid ${connid} SELECT name FROM numbers WHERE number=${CALLERID(num)})
exten => 111,n,Set(CALLERID(name)=${resultid})
exten => 111,n,MYSQL(Clear ${resultid})
exten => 111,n,MYSQL(Disconnect ${connid})
exten => 111,n,Dial(SIP/200,7)
Вот лог:
Executing [111@phones:1] MYSQL("SIP/111-00000002", "Connect connid localhost ast_user password asterisk") in new stack
-- Executing [111@phones:2] MYSQL("SIP/111-00000002", "Query resultid 1 SELECT name FROM numbers WHERE number=380633717204") in new stack
-- Executing [111@phones:3] Set("SIP/111-00000002", "CALLERID(name)=2") in new stack
-- Executing [111@phones:4] MYSQL("SIP/111-00000002", "Clear 2") in new stack
-- Executing [111@phones:5] MYSQL("SIP/111-00000002", "Disconnect 1") in new stack
-- Executing [111@phones:6] Dial("SIP/111-00000002", "SIP/200,7") in new stack
Нашёл решение:
exten => 111,1,MYSQL(Connect connid localhost ast_user password asterisk);подключение к базе и получение имени звонящего
exten => 111,n,MYSQL(Query resultid ${connid} SELECT name FROM pbook WHERE calld=${CALLERID(num)})
exten => 111,n,MYSQL(Fetch fetchid ${resultid} name)
exten => 111,n,Set(CALLERID(name)=${name})
exten => 111,n,MYSQL(Clear ${resultid})
exten => 111,n,MYSQL(Disconnect ${connid})
Надо было просто ещё раз обработать выборку с базы.
то что вы делаете лишено смысла. используйте релатайм. будет выглядеть гдето так.
exten => 111,1,Set(CALLERID(name)=${REALTIME_FIELD(pbook,calld,${CALLERID(num)},name})
только коректнее наверно все же так
exten => 111,1,Set(name=${REALTIME_FIELD(pbook,calld,${CALLERID(num)},name})
exten => 111,2,ExecIf($[ "${name}" != "" ]?Set(CALLERID(name)=${name})
правда, еще надо написать в /etc/asterisk/extconfig.conf
calld => mysql,general,calld
ну и res_mysql.conf заполнить данными для коннекта секцию general.можно использовать другое имя базы, тоесть более одной. тогда в extconfig.conf пишите вместо general имя секции.
Задан: 2011-08-26 19:41:20 +0400
Просмотрен: 1,009 раз
Обновлен: Aug 27 '11
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.