AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

Asterisk, Cisco, Transfer

Asterisk IP PBX 10 сообщений -
#1

Есть текущий разговор (№1), данные о котором хранятся в файле с именем которое формируется на основе uniqueid

1) Если делать перевод средствами астериска (у меня в данный момент #), то создается новый вызов (№2) и в этом вызове я могу получить доступ до файла с данными из разговора (№1).
2) Если делать перевод средствами телефона (кнопка xfer, сообщением REFER), то создается новый вызов (№2) и в этом вызове я НЕ могу получить доступ до файла с данными из разговора (№1).

Вопрос каким образом можно добраться до файла с данными (№1) во втором случае. Если не хватает исходных данных, то спрашивайте, дополню.

ЗЫ Думал может в телефоне как-то перепрограммировать кнопку xfer на то что б она выдавала # в линию, но тоже не понял как...
#2

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

_________________
платный суппорт по мере возможностей
#3

Когда я писал про REFER , то как раз имел ввиду, что происходит перевод нового канала.

Вероятно уместнее было запостить в разделе оборудование, с целью перепрограммирования кнопки.

Подумал может быть есть еще какой-то способ на уровне астериска, кроме сравнения текущих соединений и поиска возможного "родительского" канала, решить мою задачу.
#4

может быть, вам поможет это?

In 1.8 and later
In some CDR backends, the following fields may also be supported:
linkedid: a unique identifier based on uniqueid. Unlike uniqueid, but spreads to other channels as transfers, dials, etc are performed
#6

Имя файла не суть, могу любое другое за основу взять, но не понимаю что это даст.

В cdr не вижу ни в файле, ни в БД.

В cel нашел отражение этого типа перевода, пока это вероятно единственныйы 100% способ определить принадлежность новго вызова к старому.


Последний раз редактировалось: Alex_asdf (Вт Янв 13, 2015 08:55)
#7

Данные можно и из переменной прочитать:
Код:
NoOp(${CHANNEL(linkedid)})


Так же можно это прямо в пакет SIP добавить:
Код:
exten => s,n,SIPAddHeader(X-orig-call-id: ${SIP_HEADER(Call-ID)})
exten => s,n,SIPAddHeader(X-unique-id: ${CHANNEL(uniqueid)})

Ну а затем и прочитать, если надо: Asterisk func sip_header
#8

В диалплане присутствует ${CHANNEL(linkedid)} , спасибо. Использую версию 11.13 , но ни в файле cdr, ни в БД (postgres) эта информация не проходит, хотя колонку в БД я добавил.

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

Added after 1 hours 23 minutes:

Вот бы сделать парсер для cel что б можно было на нем сделать полноценный лог звонка. Кто-то этим занимался ?
#9

я развлекался с cel, но потом забил, т.к. в некоторых случаях он вешал Asterisk 1.8.
в итоге начал писать свою стату.
#10

У меня в БД пишет стабильно без каких-либо проблем. Только вот с сопоставлением данных проблема получается, когда вызов был с неотвеченными переводами.