Вы не авторизованы

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

RSS
Не отображается панель звонков у инициатора звонка (нельзя отбить звонок), Обычное приложение. Режим: Панель телефонии + Встроенный SIP телефон
 
Звоню на внутренний номер. Получатель вызова поднимает трубку.
У меня (инициатора вызова) нет возможности положить трубку. Панель выглядит так:



У получателя панель звонков отображается, и через неё он может положить трубку:



Как предоставить возможность инициатору вызова - завершать вызов?
 
Пока получатель не взял трубку, панель у инициатора есть
 
Проанализировал код 1С в отладчике. Происходит следующее:

При подъеме трубки получателем, приходит внешнее событие. Выполняется процедура:
МодульОбычногоПриложения.ОбработкаВнешнегоСобытия(Источник = "MikoAjamEvent", Событие = "Pickup", Данные = "<generic event="Pickup" privilege="call,all" channel="SIP/5002-00000008" targetchannel="SIP/5002-00000007" />
")

Затем в процедуре "onPickup(Знач XMLУзел)":
1. читаем канал:
channel  =  XMLУзел.ЗначениеАтрибута("channel");       // этот наш новый канал: "SIP/5002-00000008"


2. проходим по всем звонкам. Если
- channel заполнен и
- это не ВходящийЗвонок И
- Звонок.Канал1+Звонок.Канал2 содержат channel
(все условия соблюдаются) тогда

(тут имеется комментарий: // при обратном звонке на мобильный каналы могут быть перетасованы)
Заполняется ЗвонокКУдалению текущим звонком и текущий звонок удаляется:
УдалитьСтрокуЗвонкаПоИндексу(ЗвонокКУдалению);

*******
Закомментировал команду удаления - панель звонков перестала исчезать при подъеме трубки.
ВОПРОС: Насколько необходима эта команда удаления звонка при подъеме трубки получателем?

P.S. процедура OnPickup теперь выглядит следующим образом:

Цитата
Процедура onPickup(Знач XMLУзел)
// <generic event="Pickup" privilege="call,all" channel="SIP/112-000001eb" targetchannel="SIP/126-000001ea" />
XMLУзел=ПолучитьЧтениеXML(XMLУзел);
Если XMLУзел=Неопределено Тогда
Возврат;
КонецЕсли;

channel  =  XMLУзел.ЗначениеАтрибута("channel");       // этот наш новый канал
targetchannel =  XMLУзел.ЗначениеАтрибута("targetchannel"); // этот канал пропадет

ЗвонокКУдалению = Неопределено;
Для каждого Звонок Из Звонки Цикл
Если Звонок.ВходящийЗвонок // входящий ищем в канале 2
И (ЗначениеЗаполнено(targetchannel) И Найти(Звонок.Канал2, targetchannel) > 0) Тогда
// обновляем значение канала  
Звонок.Канал2 = channel;
ИначеЕсли ЗначениеЗаполнено(channel)
И Найти(Звонок.Канал1 + Звонок.Канал2, channel) > 0 Тогда
// при обратном звонке на мобильный каналы могут быть перетасованы  
//Юрасов++
//ЗвонокКУдалению = Звонок;
Сообщить("Отладка: Предотвращено удаление звонка");
//Юрасов--
КонецЕсли;
КонецЦикла;  
Если НЕ ЗвонокКУдалению = Неопределено Тогда
УдалитьСтрокуЗвонкаПоИндексу(ЗвонокКУдалению);
КонецЕсли;

КонецПроцедуры
 
При таком варианте тоже есть глюк:
У принимающего теперь создается два звонка. видимо этот код предназначался как раз для него. и не должен был обрабатываться на инициаторе.
В общем перед концом процедуры пришлось добавить вызов самописной процедуры:

Цитата
....
ОчисткаДублейЗвонков();
КонецПроцедуры


А после конца процедуры описать саму процедуру:


Цитата
Процедура ОчисткаДублейЗвонков()
Уид= Новый Соответствие;

Для каждого Звонок Из Звонки Цикл

Если Уид[Звонок.UniqueID1]=Звонок.UniqueID2 Тогда
УдалитьСтрокуЗвонкаПоИндексу(Звонок);
Иначе
Уид.Вставить(Звонок.UniqueID1,Звонок.UniqueID2);
КонецЕсли;
КонецЦикла;

КонецПроцедуры
Странно конечно все это.. впечатление что 1С не знает когда и какие звонки активны у пользователя..
 
Приложите полный лог для анализа.
Опишите настройки панели телефонии. В каком режиме (схема работы) пытаетесь использовать?
 
Панель телефонии + Встроенный SIP телефон.
1С в режиме обычного приложения.
Включен флаг "Супервизор"

Астериск настраивал не я, но могу поинтересоваться у коллег о настройках Астериска. Знаю только что он работает с FreePBX.

Вернул код в исходное состояние.

Логи (Звоню, приемник поднимает трубку):
Скрытый текст

Приемник вешает трубку:

Скрытый текст

Это логи из служебных сообщений 1С
Нужны ли какие нибудь логи из астериска?
 
Никто ничего не хочет про комментировать? Прошло достаточно времени. Обновились до последнего релиза панели. Ничего не поменялось. Код 1С остался тем же. Проблема не ушла.
 
Напишите нам заявку в форме обратной связи
http://www.telefon1c.ru/contacts/

Приложите ссылку на это обсуждение.
Подготовьте демо базу (копию с рабочей).
Попробуем помочь с анализом.
 
Подключившись удаленно к вашему ПК мы воспроизвели ситуацию.
Но на версии панели телефонии 1.2.23.9, ситуация не воспроизводится (проверили на нашем сервере по вашему логу).

Отличие - используемая Вами панель телефонии модифицирована.
Я прошу проверить, воспроизводится ли ситуация на типовой версии панели телефонии.
Читают тему (гостей: 1)