Я пытаюсь запустить скрипт Python, используя "mod_python" на своем сервере FreeSwitch, чтобы проверить локальную базу данных REDIS. Пока мне удалось запустить скрипт из диалплана следующим образом:
<condition field="destination_number" expression="^(.*)$" break="on-true">
<action application="log" data="ORIGIN : ${caller_id_number}"/>
<action application="set" data="did=$1"/>
<action application="log" data="DID = $1"/>
<action application="python" data="test"/>
<action application="bridge" data="sofia/external/$1@10.X.X.1"/>
</condition>
Сценарий Python выглядит примерно так:
import redis
from datetime import timedelta
import freeswitch
def handler(session, args):
did = session.getVariable("did")
llave = "k"+did
cliente = redis.Redis(host='localhost', port=6379, db=0)
resultado = cliente.get(llave)
if resultado is None:
freeswitch.consoleLog("INFO","DID no esta en cache, agregando a la BD + TTL 10 minutos")
cliente.set(llave,did)
cliente.expire(llave, timedelta(minutes=20))
else:
ttl = cliente.ttl(llave)
freeswitch.consoleLog("INFO","DID en cache, TTL= %s segs\n" % ttl)
freeswitch.consoleLog("INFO","Colgando llamada")
session.hangup("21")
Все работает нормально. Что мне нужно сделать, так это «проверить/захватить», если на вызов ответили, чтобы внести изменения в базу данных REDIS. До сих пор я пытался добавить в скрипт что-то вроде этого:
if session.ready():
// some work to do in REDIS
else:
// no changes in REDIS DB
не повезло. Есть ли способ зафиксировать ответ на вызов в скрипте python?
Рикардо, донде эста ла кабеса?
Disculpa..no entendí eso...