Size: a a a

2021 February 16

h

halt✯ in ru_freeswitch
2021-02-16 13:12:28.988983 [INFO] switch_cpp.cpp:1447 Ответил вн.номер: 1002


freeswitch.consoleLog("INFO", "INFO\n" .. event:serialize() .. "\n")

if ( event:getHeader("Presence-Call-Direction") == "outbound" ) then
local dstnum = event:getHeader("Caller-Destination-Number") or "Никто не ответил";
freeswitch.consoleLog("INFO", "Ответил вн.номер: " .. dstnum .. "\n")
end


Делал через хук в lua.conf.xml
источник

AK

Andrey Kryukov in ru_freeswitch
Viktor
Задача - положить в переменную номер ответившего оператора в момент поднятия трубки. Через ESL у меня это реализовано  (скрипт на питоне), проблема в том, что мне надо вернуть  номер ответившего оператора в диалплан для обработки файла звукозаписи.
Смотрите, событе о том что взяли трубку есть и есть оно на Б -канале(канале связи с оператором), вам нужно присвоить переменную А-каналу
uuid_setvar - в этом нам поможет
Usage: uuid_setvar <uuid> <varname> [value]

теперь получается нужно найти второй канал , то есть который обрабатывается в вашем диалплане,
так вот его можно найти из переменной типа bridged_uuid  или как-то так
источник

AK

Andrey Kryukov in ru_freeswitch
halt✯
2021-02-16 13:12:28.988983 [INFO] switch_cpp.cpp:1447 Ответил вн.номер: 1002


freeswitch.consoleLog("INFO", "INFO\n" .. event:serialize() .. "\n")

if ( event:getHeader("Presence-Call-Direction") == "outbound" ) then
local dstnum = event:getHeader("Caller-Destination-Number") or "Никто не ответил";
freeswitch.consoleLog("INFO", "Ответил вн.номер: " .. dstnum .. "\n")
end


Делал через хук в lua.conf.xml
через хук на ответ отно безусловно работает
источник

h

halt✯ in ru_freeswitch
Viktor
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import string
import sys

from ESL import *

con = ESLconnection("127.0.0.1","8021","ClueCon")
#are we connected?

if con.connected:

 con.events("plain", "all");

 while 1:
 #my $e = $con->recvEventTimed(100);
   e = con.recvEvent()
 
   if e:
  s=e.serialize()
  if s=="":
   continue
  else:    
   s2=s.split('\n')
   mas={}
   for i in s2:
     if i!="":
       st=i.strip().split(':')
       mas[st[0].strip()]=st[1].strip()
       

   if mas['Event-Name'] == 'CHANNEL_BRIDGE':
     telefon=mas["Other-Leg-Destination-Number"][0:]
     print telefon
и видимо здесь должно быть Event-Name: CHANNEL_ANSWER
и "Presence-Call-Direction") == "outbound"
источник

h

halt✯ in ru_freeswitch
или inbound
источник

AK

Andrey Kryukov in ru_freeswitch
Viktor
Задача - положить в переменную номер ответившего оператора в момент поднятия трубки. Через ESL у меня это реализовано  (скрипт на питоне), проблема в том, что мне надо вернуть  номер ответившего оператора в диалплан для обработки файла звукозаписи.
Смотрите Виктор, тут есть 2 вопроса:
1. А запись у вас одна ? на весь разговор ? не может ли так получиться что один оператор  переведет вызов на другого ? тогда как вы это будете обрабатывать ?
2. А зачем постобработку записи разговора делать в диалплане ?
источник

V

Viktor in ru_freeswitch
Andrey Kryukov
Смотрите Виктор, тут есть 2 вопроса:
1. А запись у вас одна ? на весь разговор ? не может ли так получиться что один оператор  переведет вызов на другого ? тогда как вы это будете обрабатывать ?
2. А зачем постобработку записи разговора делать в диалплане ?
звонки переводиться не будут, файл с записью надо поместить в папку с номером ответившего оператора.
источник

V

Viktor in ru_freeswitch
конкретно с перемещением мы уже давно разобрались, тут мне помогли
источник

V

Viktor in ru_freeswitch
Andrey Kryukov
Смотрите, событе о том что взяли трубку есть и есть оно на Б -канале(канале связи с оператором), вам нужно присвоить переменную А-каналу
uuid_setvar - в этом нам поможет
Usage: uuid_setvar <uuid> <varname> [value]

теперь получается нужно найти второй канал , то есть который обрабатывается в вашем диалплане,
так вот его можно найти из переменной типа bridged_uuid  или как-то так
Такой переменной нет в channel variables. только одна переменная мне подходит, но она в поле Other-Leg-Destination-Number, такую переменную я вызвать не могу.
источник

V

Viktor in ru_freeswitch
halt✯
2021-02-16 13:12:28.988983 [INFO] switch_cpp.cpp:1447 Ответил вн.номер: 1002


freeswitch.consoleLog("INFO", "INFO\n" .. event:serialize() .. "\n")

if ( event:getHeader("Presence-Call-Direction") == "outbound" ) then
local dstnum = event:getHeader("Caller-Destination-Number") or "Никто не ответил";
freeswitch.consoleLog("INFO", "Ответил вн.номер: " .. dstnum .. "\n")
end


Делал через хук в lua.conf.xml
Уважаемый halt, я просто не владею знаниями как "выставить хук в lua.conf.xml"
источник

h

halt✯ in ru_freeswitch
halt✯
Кстати, наверное будет удобнее повесить хук в lua.conf.xml
Что то типа <hook event="CHANNEL_ANSWER" script="answer.lua"/>
По Call-Direction отфильтровать входящий/исходящий вытянуть номер ответившего и что то сделать
https://freeswitch.org/confluence/display/FREESWITCH/Event+List#EventList-1.5CHANNEL_ANSWERevent
источник

AK

Andrey Kryukov in ru_freeswitch
А в каком моменте ее нет  ? на ответе ? вообще-то странно что нет , должна быть
можете вывести  в момент ответа информацию с первого и со второго канала
источник

V

Viktor in ru_freeswitch
Andrey Kryukov
А в каком моменте ее нет  ? на ответе ? вообще-то странно что нет , должна быть
можете вывести  в момент ответа информацию с первого и со второго канала
Андрей, давайте так. Для меня честно новось, что можно выводить info с первого и со второго канала... Я хочу стать умнее, но это так медленно происходит)
источник

AK

Andrey Kryukov in ru_freeswitch
Viktor
Андрей, давайте так. Для меня честно новось, что можно выводить info с первого и со второго канала... Я хочу стать умнее, но это так медленно происходит)
<action application="bridge" data="{execute_on_answer='info'}sofia/gateway/provider/5551231234"/>
источник
2021 February 17

е

енот in ru_freeswitch
есть какие-то варианты трехсторонних звонков без участия модуля конференции?
источник

AK

Andrey Kryukov in ru_freeswitch
енот
есть какие-то варианты трехсторонних звонков без участия модуля конференции?
источник

е

енот in ru_freeswitch
источник

АХ

Алексей Хабуляк... in ru_freeswitch
енот
есть какие-то варианты трехсторонних звонков без участия модуля конференции?
можно еще использовать attended transfer. там вроде при нажатии 0 все соединяет вместе
источник

е

енот in ru_freeswitch
Алексей Хабуляк
можно еще использовать attended transfer. там вроде при нажатии 0 все соединяет вместе
мне бы незаметно для юзера это делать
источник

АХ

Алексей Хабуляк... in ru_freeswitch
енот
мне бы незаметно для юзера это делать
ну тогда либо то что выше, либо еще можно глянуть на
https://freeswitch.org/confluence/display/FREESWITCH/mod_dptools%3A+eavesdrop
источник