Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

Вызов через просулшивающего оператора

0

Здравствуйте. Поставлена такая задача. Есть asterisk и есть абоненты, которые к нему подключены. При совершении входящих/исходящих вызовов необходимо чтобы трафик прослушивали операторы и в случае чего вмешивались в разговор. Подскажите парни, это можно как-то реализовать? P.S.: используются софтфоны,которые при необходимости можно запрограммировать.

удалить закрыть спам изменить тег редактировать

спросил 2013-04-02 21:29:42 +0400

Annapolis Gravatar Annapolis
21 ● 4 ● 1 ● 4

обновил 2013-04-02 22:14:52 +0400

Comments

Это какие такие "софтфоны,которые при необходимости можно запрограммировать" ?

zzuz ( 2013-04-03 02:11:21 +0400 )редактировать

>> Это какие такие "софтфоны,которые.."

twinkle в исходниках!! кто б тырфейс полюдски "запрограммировал", я б денег дал (на пиво, больше нету))

viktorkho ( 2013-04-04 11:30:42 +0400 )редактировать

Ну так. С таким подходом и Linphone можно туда же относить.

zzuz ( 2013-04-04 11:43:47 +0400 )редактировать

2 Ответа

2

закидывать всех в конференцию или ChanSpy

ссылка удалить спам редактировать

ответил 2013-04-02 21:54:45 +0400

komrad123 Gravatar komrad123
3810 ● 5 ● 3 ● 44

Comments

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

Annapolis ( 2013-04-02 21:59:36 +0400 )редактировать

Мысленной командой чтоли?

switch ( 2013-04-02 22:04:16 +0400 )редактировать

Оператор и абонент подключены к АТС, при событии снятия трубки(успешного вызова) абонентом, схема должна срабатывать.

Annapolis ( 2013-04-02 22:07:21 +0400 )редактировать
3

Ищите интегратора, платите ему деньги за то, что будет интерпретировать ваши марсианские послания.

switch ( 2013-04-02 22:14:36 +0400 )редактировать
1

если правильно понял задачу... не тестировал...

-- extensions.lua technology="SIP" extensions={} dialincontext="dialin" -- имя контекста входящих звонков dialoutcontext="dialout" -- имя контекста исходящих звонков spygocontext="spygo" spyspoolcontext="spyspool" spyspoolexten="start" spystartcontext="spystart" spystartexten="start" env=getfenv() asterisk_exten_table="extensions" operatorlist = {"0001","0002","0003","0004","0005"} -- устройства операторов которых нужно обзванивать для прослушивания callorder = "random" -- может быть - random или seq (в случайном или по порядку) CALLSPOOL_TMPFILE = "/tmp/%s.call" CALLSPOOL_WORKINGDIR = "/var/spool/asterisk/outgoing" MEDIA_STARTLISTENING_NOTIFICATION = "now-listening" -- медиа файл который будет проигрываться оператору перед включением в канал callfile= [[ Channel: Local/%s@%s Context: %s Extension: %s Priority: 1 Set: PEERCHAN=%s Set: TOANNOUNCE=%s ]] function macrooption(peerannounce) return ("M(%s,%s,%s)"):format(spygocontext,channel.CHANNEL:get(),peerannounce) end t=env[asterisk_exten_table] t[dialoutcontext] = {} -- контекст для исходящих вызовов t[dialincontext]["_X."] = function(c,e) app.dial( ("%s/%s/%s"):format(technology, outgoingpeer, e), null, macrooption(channel.CHANNEL("peername"):get())) app.hangup() end t[dialincontext] = {} -- контекст для входящих вызовов t[dialincontext]["_X."] = function(c,e) app.dial(("%s/%s"):format(technology, e),null,macrooption(e)) app.hangup() end t[("macro-%s"):format(spygocontext)] = {} -- макрос создающий .call файл t[("macro-%s"):format(spygocontext)]['s'] = function(c,e) tmpfilename=CALLSPOOL_TMPFILE:format(channel.UNIQUEID:get()) local file = assert(io.open(tmpfilename, "w")) assert(file:write(callfile:format(spyspoolexten,spyspoolexten,spystartcontext,spystartexten,channel.ARG1:get(),channel.ARG1:get()))) assert(file:close()) assert(os.rename(tmpfilename, CALLSPOOL_WORKINGDIR)) end t[spyspoolcontext] = {} -- контекст с циклом обзвона операторов t[spyspoolcontext][spyspoolexten] = function(c,e) ol_len = #operatorlist for i = 1, ol_len do ({random = function() nextoperator = math.random(#operators) operator = operators[nextoperator] table.remove(operators,nextoperator) end, seq = function() operator = operators[i] end })[callorder]() app.dial(("%s/%s"):format(technology,operator)) end end t[spystartcontext] = {} -- контекст осуществляющий включение в канал t[spystartcontext][spystartexten] = function(c,e) local peerchan=channel.PEERCHAN:get() app.wait(1) app.answer() app.playback("silence/1") app.playback(MEDIA_STARTLISTENING_NOTIFICATION) if (channel.TOANNOUNCE:get()):match('%d') then -- если в имени пира цифры то проговариваем ему app.playback("silence/1") app.saydigits(channel.TOANNOUNCE:get()) end app.playback("silence/1") app.channspy(channel.PEERCHAN:get()) app.hangup() end 
ссылка удалить спам редактировать

ответил 2013-04-07 12:44:02 +0400

octopas Gravatar octopas
111 ● 5 ● 1 ● 3

обновил 2013-04-07 12:50:34 +0400

Comments

Вот оно новое поколение комментаторов! Тоже не проверил, но уже не RTFM

Топикстартеру - проверьте решение, отпишите, не забудьте, это вам писали

viktorkho ( 2013-04-07 20:23:09 +0400 )редактировать

Да, обязательно, благодарю!

Annapolis ( 2013-04-08 20:07:04 +0400 )редактировать

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку

подписаться на rss ленту новостей

Статистика

Задан: 2013-04-02 21:29:42 +0400

Просмотрен: 393 раз

Обновлен: Apr 07 '13

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.