MYSQL
Команда плана набора Asterisk - 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()