MYSQL

Обзор

Работа с MySQL

Syntax:

  • MYSQL(Set timeout <num>) - Установить время соединения в секундах.
  • MYSQL(Connect connid dhhost[:dbport] dbuser dbpass dbname [dbcharset]) - Подключиться к БД. Аргументы содержат обычные MySQL параметры. дополнительный параметр dbcharset по умодчанию 'latin1'. Идентификатор соединения возвращается в переменную ${connid}.
  • MYSQL(Query resultid ${connid} query-string) - Выполнить MySQL запрос через через предварительно установленное соединение ${connid}. Результат сохраняется в ${resultid}.
  • MYSQL(Nextresult resultid ${connid}) - Если предыдущий запрос возвращает больше одного результата, дополнительные результаты можно сохранить в следующем ${resultid}. Полезно для сохраняемых процедур.
  • MYSQL(Fetch fetchid ${resultid} var1 var2 … varN) - Получает строку из результатов содержащихся в ${result_identifier}. Назначает полученные поля в переменные ${var1} … ${varn}.
    ${fetchid} устанавливается TRUE, если дополнительные строки существуют в наборе результатов.
  • MYSQL(Clear ${resultid}) - Освобождает память от запрошенных данных.
  • MYSQL(Disconnect ${connid}) - Разъединяет ${connid} соединение.

На выходе всегда возвращается 0. Устанавливает MYSQL_STATUS на 0 в случае успеха и -1 ошибки.

Пример 1 - получение данных из CDR

exten => s,1,Set(CALLID=${CALLERID(num):-11})
exten => s,n,MYSQL(Connect connidcdr localhost userdb passworddb asteriskcdrdb utf8)
exten => s,n,MYSQL(Query resultidcdr ${connidcdr} SELECT * FROM cdr WHERE dst LIKE '%${CALLID}%' ORDER BY calldate DESC)
exten => s,n,MYSQL(Fetch fetchid ${resultidcdr} accid calldate clid src dst)
exten => s.,n,Set(number=${src})
exten => s,n,NoOp(caller --> ${clid} callee --> ${dst})
exten => s,n,GOTOIF($["${dst}" = ""]?nodst:dst)
exten => s,n(dst),MYSQL(Clear ${resultidcdr})
exten => s,n,MYSQL(Disconnect ${connidcdr})
exten => s,n,Dial(SIP/${number},20,tT)
exten => s,n,GotoIf($["${DIALSTATUS}" = "BUSY"]?nodst)
exten => s,n,GotoIf($["${DIALSTATUS}" = "NOANSWER"]?nodst)
exten => s,n,GotoIf($["${DIALSTATUS}" = "FAILED"]?nodst)
exten => s,n(nodst),MYSQL(Clear ${resultidcdr})
exten => s,n,MYSQL(Disconnect ${connidcdr})
exten => s,n,Goto(from-trunk,${DID},1)
exten => h,1,hangup()

Команды диалплана Asterisk

  • asterisk/app/mysql.txt
  • Последние изменения: 2018/03/12