На какое-то время пришлось отложить. Вернулся вновь.
Не работает. Не работает, как ожидается.
Диалплан:
Код:
<include>
<extension name="Select Distributor">
<condition field="destination_number" expression="^(\+7|8)?(\d{10})$|^(\d{6})$" break="never">
<action application="log" data="INFO: select_distributor for ${destination_number}"/>
<action application="set" data="args=${destination_number}"/>
<action application="python" data="destination_distributor=${python(select_distributor)}"/>
<action application="bridge" data="sofia/gateway/${distributor(${destination_distributor})}/${destination_number}"/>
<action application="log" data="INFO: select_distributor ${destination_distributor} for ${destination_number}"/>
</condition>
</extension>
</include>
скрипт:
Код:
def fsapi(session, stream, env, args):
destination_number = session.getVariable('destination_number')
fs.consoleLog('info', 'select_distributor destination_number=%s start...\n' % destination_number)
if destination_number[0] != '0':
destination_number = destination_number[-10:]
if len(destination_number) == 6:
destination_number = '8362' + destination_number
if len(destination_number) == 10:
fs.consoleLog('info', 'select_distributor %s start...\n' % destination_number)
db = pg2.connect('dbname=50eb8a3c0e444176ea5139ad5de941cd79daa8b9 '\
'user=freeswitch password="freeswitch" '\
'host=192.168.222.179 port=5432')
SELECT = 'select dst.name, dst.cut_code, dst.id '\
'from routes_mask roma '\
'join operators op on (op.id=roma.operator_id) '\
'left join distributors dst on (dst.id=op.distributor_id) '\
'join regions reg on (reg.id=roma.region_id) '\
'where (aaa=%s and %s between range_a and range_b) and '\
'dst.is_active and (dst.all_home or reg.is_home) '\
'order by roma.timestamp desc '\
'limit 1;'
ARGS = (destination_number[:3], int(destination_number[3:]), )
c = db.cursor()
c.execute(SELECT, ARGS)
distributor = c.fetchone()
c.close()
db.close()
if distributor:
fs.consoleLog('info', 'select_distributor distributor: %s\n' % distributor[0])
destination_number = '+7' + destination_number
session.setVariable('destination_number', destination_number)
stream.write(distributor[0])
Оно как бы работает, но не звонит. И дальше по диалплану не идёт.
Что необходимо оправить?
База сделана на основе предоставляемых россвязью файлов. Наверное, многие посылали лучи добра в сторону закона об отмене мобильного рабства.
Подозреваю, что что-то не так с диалпланом.
В идеале всё должно на этой паре и заканчиваться.
Благодарю.