Что касается конфигураций, проверил работоспособность обычного приложения на «Бухгалтерии предприятия 2.0», «Управление торговлей 10.3», «Комплексная автоматизация», «Розница 1.0», управляемое приложение — «Управление торговлей 11», «Бухгалтерия предприятия 3.0», «Управление небольшой фирмой 1.4» (1.5 тоже должна работать), «Розница 2.0».
Введение.
В основе софтфона внешняя компонента CH-Com1S.dll, написанная на С++ с использованием технологии Native. Софтфон также поддерживает обмен сообщениями. Этот механизм немного за рамками стандарта SIP-протокола (добавлен обмен дополнительными служебными сообщениями), поэтому он будет работать, только при условии регистрации на сервере разработчика (т.е. на моей машинке с очень и очень скромным ресурсом). Здесь нет никакого подвоха (в конце концов, можно этот сервис и не использовать без ущерба для всего остального). Во-первых, эта часть sip-протокола поддерживается не всеми провайдерами, а в полном объеме возможно и никем (мне, во всяком случае, не удалось найти таких), во-вторых, как я уже сказал, добавлен обмен дополнительными служебными сообщениями, который позволяет информировать отправителя о доставке сообщения и о прочтении. Зарегистрировать на моем сервере можно только компоненту CH-Com1S.dll, при этом принять сообщение можно с любого другого софтфона, если он сам и оператор, у которого он зарегистрирован, этот сервис поддерживают (конечно, никаких дополнительных уведомлений в данном случае не будет). Компонента предоставляет возможность зарегистрироваться сразу на нескольких sip-серверах различных операторов, т.е. получается эдакий аналог многоканального телефона, что может быть полезно, например, для оптимизации звонков в части тарификации – один экаунт для обмена сообщениями, второй — для звонков по межгороду, третий — для международных, четвертый — не знаю, сами придумайте.
Вообще, старался сделать максимально простой интерфейс, не загружая конечного пользователя различными непонятностями. Не уверен, что это у меня получилось… Хотя, будем посмотреть.
Первое, что необходимо сделать до того, как приступать к работе с внешней обработкой, это скопировать файл CH-Com1S.dll в каталог C:Program Files (x86)1cv88.3.4.389bin, если Ваш комп имеет 64-битную архитектуру или в C:Program Files1cv88.3.4.389in, если 32-х битную. 8.3.4.389 – это релиз платформы, которая у меня установлена, у Вас может быть и скорее всего другой номер (т.е. именем этой папки будет номер установленной на Вашем компьютере платформы). Файл CH-Com1S.epf может храниться, где угодно на жестком диске, или же его можно сохранить в справочнике «Дополнительные внешние обработки» и запускать оттуда (Главное меню->Сервис–>Дополнительные отчеты и обработки –> Дополнительные внешние обработки).
Еще одна небольшая деталь. При входящем звонке и сообщении обработка будет пытаться найти в справочниках «Контрагенты» и «Физические лица» по экаунту/номеру телефона. Для того, чтобы этот процесс мог бы иметь, какой-то успех, давайте договоримся, что номера телефонов у нас семизначные без пробелов и дефисов ( в бухгалтерии набираем +7(495)1236587, в других конфигурациях, где номер вводится через встроенную процедуру в специальной форме, после ввода представление может быть, например таким +7(495)1236587 доб.12, где ключевой момент 1236587 – по порядку, без каких либо символов между). Если необходимо ввести sip-экаунт, то вводим его в формате sip:yorname@yordomain (например: sip:vasiapupkin@sip.sip2all.net) в поле с контактной информацией, которая имеет тип «Другое».
Интерфейсы в управляемом и обычном приложении практически одинаковые, единственное, отличается немого страница управлением вызовами.
Настройки.
Авторизация
Порт – по умолчанию 5060. Предлагаю так и оставить.
Прокси – IP – адрес прокси-сервера, если Вы его используете. Если не знаете, то спросите у Вашего администратора сети, если и он не знает, оставьте незаполненным. (Для продвинутых: это прокси для всех экаунтов, для каждого в отдельности может позже сделаю)
STUN – технология для обхода NAT. Здесь можно указать IP STUN – сервера, если в этом есть необходимость. Есть она или нет, может сказать поставщик услуг (sip-оператор). Для перечисленных выше операторов такой необходимости нет, вопрос прохождения NAT решается на стороне серверов, т.о. поле можно оставить незаполненным.
В табличной части этой страницы экаунты, с которыми Вы работаете. Как добавить экаунт — интуитивно понятно. Графа «Активный» предназначена для пометки экаунтов, которые подлежат регистрации. Компонента каждые 60 сек. будет опрашивать соответствующие сервера на доступность по указанным регистрационным данным (только те, которые помечены, как «Актив.»). Если Вы знаете, что, какой-то экаут временно неактуален, но Вы хотите сохранить регистрационные данные, то лучше снять галку «Актив.», т.к. при опросе по этим рег. данным компонента будет «тормозить», ожидая заведомо отрицательного ответа сервера и так каждую минуту. Если регистрация прошла успешно, то соответствующая строка табличной части меняет цвет текста на зеленый, в противном случае –черный.
Сделать учетную запись основной – текущая по умолчанию, Текущая — учетная запись, с которой вы звоните. Текущая учетная запись определяется на странице «Вызовы». В настоящей реализации предоставлена возможность вручную определять текущую учетку. (В принципе, можно, при необходимости, реализовать, что-то типа дайл-плана в рамках софтофона, хотя, не уверен, что надо.)
Регистрация на sip-сервере разработчика — это, как раз, то о чем я уже говорил выше. В основном сервер предназначен для обмена сообщениями, хотя это полноценный sip-сервер, который поддерживает протокол, практически в полном объеме, т.е. можно и поговорить. Единственное напоминаю, что в настоящий момент машинка слабенькая и канальчик ограниченный, т.е. если вдруг все захотят поговорить, то по ряду объективных обстоятельств может, как канальчика не хватить, так и ресурса машинки. Хотя, впрочем, давайте пробовать.
Сообщения
Максимальное количество записей в журнале сообщений. В данной реализации ведется журнал сообщений, в котором хранится информация о том, какие сообщения, когда Вы оправляли/получали, в каком состоянии в данный момент находятся отправленные/ полученные сообщения (были успешно доставлены отправленные или нет, были прочитаны полученные/отправленные или нет). Данный журнал по окончании работы сохранится на диске в виде текстового файла, а во время начала работы считывается в оперативную память. Размер оперативной памяти ограничен, поэтому не стоит устанавливать значение этого поля слишком большим. Я предлагаю обойтись числом 100 – 150. Если надо больше, то можно дополнительно организовать архив и отдельно реализовать работу с ним. Это совсем не сложно, как Вы сами понимаете. Основной минус, тем не менее, не в том, что журналы ограничиваются по количеству записей, наиболее существенный негатив универсального (неинтегрированного в конфигурацию) решения в том, что журналы (и сообщений, и истории вызовов) хранятся на локальных компьютерах, а не в базе данных, что по понятной причине существенно затруднит контроль и анализ, если такие понадобятся, как звонков, так и переписки. Ведь, наверное, и так всем понятно, что «звонилка» внутри 1с привлекательна, прежде всего, тем, что она может позволить аккумулировать дополнительную информацию в корпоративной базе данных в целях последующего ее анализа.
Оправлять автоматически. Обработка будет проверять Ваш журнал сообщений на наличие недоставленных и пытаться отправить их снова через интервал в секундах, указанный в поле «Интервал проверки неотправленных».
Данная реализация «доотправки» недоставленных сообщений, конечно не лучший вариант решения данной проблемы. Для того, чтобы адресат получил Ваше сообщение у него в момент отправки тоже должна быть запущена эта обработка. Т.о., если Вы из Москвы хотите с кем-то переписываться во Владивостоке, то возникнут, скорее всего, трудности, связанные с необходимостью в одно и тоже время сидеть тупить в 1с, как минимум из-за разницы в часовых поясах. Вариантов решения этой проблемы больше чем 1, я, скорее всего, сделаю «досылку» на стороне своего сервера. Пока не делал, т.к. нет понимания спроса на данный сервис, нужен ли он вообще.
Файлы и папки
Вся информация, связанная с работой обработки, хранится в обычных текстовых файлах (xml — для продвинутых). Где будут храниться на диске сами файлы, Вы можете определить самостоятельно, хотя при первом запуске все поля будут заполнены значениями по умолчанию. При первом запуске в Вашем профиле по адресу C:usersuornameAppDataRoaming будет создана папка CH_COM, а в ней папки Convers, History, Mail, Messages. «Запись разговоров» — это папка для хранения wav-файлов – записанных Вами разговоров. Каждая запись хранится в отдельном файле в имени, которого достаточно примитивно закодирована информация, по которой можно определить, к какому звонку он имеет отношение. Но Вам это определять вряд ли понадобится т.к. за вас это делает обработка.
Смысл значения поля «Макс кол. записей истории вызовов» аналогичен вышеописанному «Максимальное количество записей в журнале сообщений». Только в данном случае речь идет о журнале вызовов – куда кто кому когда звонил. Это журнал отображается в табличной части страницы «Вызовы».
1С
Эта страница будет доступной в случае, если в метаданных конфигурации присутствует документ «Событие». Т.е. если будете запускать из «Бухгалтерии предприятия», то этой страницы не увидите.
Настройка предназначена для конфигураций, в которых реализована данная сторона управленческого учета. Внешняя обработка может, если Вы захотите, при каждом входящем/исходящем вызове создавать документ «Событие»
Суть значений этой страницы понятна, мне кажется и так – при каких обстоятельствах нужно создавать документ «Событие».
Отдельно о значении поля «Если при входящем звонке, контрагент не найден в справочниках БД, то в документ "Событие" создавать и значение реквизита "Контрагент" в нём:». При постановке учета в рознице, и в интернет-магазинах в частности, в качестве контрагентов выступает большое количество частных лиц. Для упрощения учета часто их всех объединяет в одного виртуального контрагента, что-то типа «Розничный покупатель» или «Частное лицо». В данном случае имеется в виду именно такой контрагент.
Управление звонками. Страница «Вызовы»
Сначала немного о телефонных номерах, именах пользователей и учетных записях. У sip-сервера нет такого понятия, как телефонный номер, а есть понятие учетной записи, ID которой выглядит, например так sip:5123467@sip.yoffice.ru или так sip:vasya@sip.sipnet.ru. Если Вы зарегистрированы у оператора МастерТел, то Ваша учетная запись выглядит примерно так sip:yorname@sip.yoffice.ru. Если Вы на любом софтфоне пытаетесь позвонить на, предположим, городской номер 84951234567, набрав указанные цифры, то на самом деле вы вызываете sip: 84951234567@sip.yoffice.ru. Это уже логика sip-сервера определяет, что «84951234567» это городской московский номер и выполняет звонок на него через шлюзовое устройство на городскую АТС. Если же sip-серверу не удается увидеть в username городской или мобильный номер, тогда осуществляется поиск в локальной базе данных соответствующего username, если найдено, то Вас пытаются соединить, если нет, то , как говорится, извините.
Если в этой статье-инструкции далее вы встретите такой термин, как «Телефонный номер» или, что-то синонимичное, то понимать его следует именно, как sip-экаунт.
Можно организовать связь между сотрудниками офиса без sip-провайдера. Если Вы знаете внутренний (локальный) IP-адрес Вашего коллеги (он должен быть похож на 192.168.х.х, то в строке набора можно набрать sip:192.168.x.x , и он увидит/услышит Ваш вызов, если, конечно у него запущена эта обработка. (Внутренний IP-адрес можно узнать, набрав в командной строке ipconfig) Таким образом, в случае если, что-то не работает, можно попытаться найти виновника – представленная обработка, сервер оператора, или ваша АТС.
Поле «Текущая учетная запись». Значение этого поля не должно быть пустым. При загрузке оно заполняется значением «Основной учетной» записи, если она успешно авторизована. Если Вам нужна другая учетка, то Вы можете ее выбрать из выпадающего списка, который содержит только записи прошедшие авторизацию (зеленые).
Теперь, как это в данный момент влияет на совершение вызова. Так, например, если ID учетной записи user@sip.sipnet.ru, то, набрав в строке набора (поле ввода) «1234567» и нажав кнопку позвонить, Вы сделаете попытку звонка на sip:1234567@sip.sipnet.ru. Т.о., учетная запись, указанная, как текущая, по умолчанию будет определять имя домена sip-сервера на который Вы звоните. Но Вы можете в строке указать явно 1234567@sip.sip2all.net, тогда, не смотря на доменное имя учетной записи «sip.sipnet.ru», звониться будет на «sip.sip2all.net». Что касается входящих вызовов, то неважно, какая у Вас учетная запись основная и по умолчанию, Вы увидите все вызовы на любую учетную запись, прошедшую авторизацию.
Сразу замечу, что одновременных вызовов может быть не более 4-х. Это ограничение введено из соображений рациональности. Не думаю, что в реальной жизни оператор сможет обрабатывать большее количество одновременных вызовов без риска потерять важный звонок. Можно было бы конечно предоставить пользователю возможность решать относительно величины этого значения, но я подумал, что лишний повод думать ему ни к чему и принял решение за него.
Реализовать вызов можно не только набрав номер/username в поле ввода, но и выбрать эти данные из контактной информации, хранящейся в Вашей базе. Для этого в правой части страницы есть все необходимое. Сначала необходимо определиться со справочником, в котором Вы планируете найти собеседника. Их, как правило, три: контрагенты, сотрудники и физические лица. При перемещении по списку выбранного справочника в нижнем маленьком окошке будет появляться необходимая контактная информация (телефоны и факсы), относящаяся к текущему контрагенту/сотруднику/физлицу. Сделав выбор (кликнув 2 раза левой клавишей мышки) по строке с нужными контактными данными Вы сделаете попытку вызова на ID, алгоритм формирования, которого указан выше. Что касается справочника «Контактные лица», то информация о контактных лицах будет видна при просмотре справочника «Контрагенты».
В окне текущих вызовов Вы можете наблюдать, то что происходит в данный момент. Все входящие вызовы, если они еще «звонят» отображаются красным цветом. Если соединение произошло (говорите или удерживаете), тогда вызов зеленый. Исходящий вызов, еще не достигший результата (не сняли трубку) – синий. Если Вы находитесь не на странице управления вызовами, то при звонке Вам внизу будет соответствующее сообщение.
Колонка “RemoteHold” покажет Вам, что на другом конце выполняется удержание данного вызова, т.е. там нажали кнопку “Hold”. К сожалению эта реализация не усладит Ваш слух в эти минуты красивой музыкой, если это не делает Ваша PBX (АТС). Если хотите, со своей стороны тоже можете нажать «Удержание» и позаниматься своими делами.
В реализации на управляемых формах страница "Вызовы" выглядит несколько иначе.
Я убрал возможность выбора контактной информации со страницы, вынеся это в отдельную форму и теперь к необходимым справочникам можно обратиться через кнопку «Выбор справочников», расположенную на этой же странице. Мне кажется, это позволило разгрузить страницу без потери функциональности.
Командное меню таблицы вызовов.
«Принять» — принять входящий вызов. Аналогично поднятию трубки на телефоне, когда он звонит.
«Отклонить» — Отклонить входящий вызов (поднять и положить трубку), закончить диалог (положить трубку).
«Перевести» — Перевести текущий вызов на другого пользователя. Перевести можно только активный вызов, тот где Вы говорите (Ваша трубка снята). В списке вызовов он имеет статус «Говорите».
Предполагается такая логическая последовательность:
1. Вам звонят, Вы снимаете трубку.
2. Выясняете, что вопрос не к Вам и лучше его задать Вашему коллеге.
3. Переводите этот вызов в состояние «Удержание», нажав на соответствующую кнопку командной панели. (Аналог “Hold”)
4.Звоните своему коллеге, уточнить может ли он принять этот вызов. Он говорит, что может.
5. «Кладете трубку» по звонку коллеге, возвращаете из состояния «Hold» удерживаемый входящий вызов двойным кликом по соответствующей строке.
6. Говорите звонящему о том, что сейчас Вы его переведете на более компетентного сотрудника.
7. Жмете перевести.
8. Выбираете из справочника сотрудников телефон Вашего коллеги двойным кликом и готово – звонит телефон вашего коллеги. Когда коллега удосужится снять трубку, переведенный вызов будет удален из таблицы на Вашем мониторе. Можно номер, на который переадресуете, также набрать на клавиатуре в строке под контактной информацией.
«Удержание» — аналог «Hold». Поставили на удержание, можете позаниматься своими делами, принять другой вызов, если, конечно звонящий готов ждать. Чтобы вернуть вызов из состояния “Hold” необходимо кликнуть по строке вызова в таблице.
«Конф.» — Конференция. К конференции можно подключить вызовы, которые на удержании плюс активный. Подключение происходит через форму, в которой необходимо пометить галочками вызовы – участники конференции (в списке будут только те, что на удержании, активный и те, что уже в режиме конференции). Если необходимо исключить вызов из конференции, то это делается через эту же форму снятием соответствующей галочки. Пока есть вызовы в режиме «Конференция», Вы не можете принимать звонки. Вы можете прекратить временно конференцию, поставив участников на удержание, ответить на важный звонок, затем вернуть всех к конференции, при этом помня, что всего одновременных вызовов не более, чем 4.
«Запись» — Можно записать разговор на диск. Созданный файл будет закреплен за записью в журнале истории вызовов. Наличие закрепленного файла будет показывать соответствующая индикация в строке таблицы истории (Rec). Чтобы прослушать созданный файл надо кликнуть по ячейке колонки «”Rec”.
Вообще, таблица кликабельна, так, например, принять или вернуть с удержания вызов можно не только через соответствующие кнопки, но и кликнув по соответствующему отображению вызова в таблице. Если интересующий Вас номер присутствует в истории вызовов (нижняя таблица), то, кликнув по нему, можно инициировать вызов этого номера.
Сообщения
Напоминаю, что сервисом могут пользоваться только те, кто имеет учетную запись на sip.sip2all.net. Для того, чтобы сообщения отправлялись, необходимо, чтобы поле «Учетная запись для отправки сообщений» было заполнено учетной записью на сервере sip.sip2all.net, прошедшей авторизацию. С интерфейсом, как мне кажется, все просто. В поле над зеленой кнопкой «Отправить сообщение» вводится текст отправляемого сообщения.
Справа от него в поле «Кому» можно вручную ввести username получателя. Нажимаем зеленую кнопку и готово – сообщение ушло. Есть возможность рассылки одного сообщения сразу нескольким получателям.
Чтобы это сделать, необходимо кликнуть по гиперссылке «Множественный выбор». На открывшейся странице можно накликать необходимых получателей, нажать кнопку «Готово», что Вас вернет на страницу отправки/получения сообщений, где и выполнить мультирассылку, нажав кнопку «Отправить сообщение». В данной реализации мультирассылку можно выполнить только по справочнику «Физические лица». Если Вы по ошибки зашли на страницу мультирассыки и хотите вернуться на страницу отправки/получения сообщений никого не выбрав, то возврат выполняется через ту же кнопку «Готово». Процесс может занимать значительное время (в зависимости от количества адресатов), т.к. каждое последующее сообщение отправляется только после того, как компонента «сообщит» об успешном результате отправки предыдущего. О получении и прочтении Ваших сообщений Вы узнаете, увидев заполненными поля с соответствующими значениями времени получения и времени прочтения. Если результат отправки сообщения отрицательный, то данное сообщение пропускается. Большой объем сообщений отправлять не пробовал, по идее должно работать нормально. Не забудьте после мультирассалки очистить соответствующий список адресатов.
Почему бы не встроить CH-Com1S.dll в макет обработки?
Спасибо автору, давно искал компоненту которая будет работать с mango-office!
GAMLET
Если не будет сложно, сообщите о результате, пдз.
Reanimator
Сегодня мы допускаем возможность параллельного развития внешней компоненты и обработки. Я думаю, что конечному пользователю при получении новой версии компоненты (я не исключаю, что от коллег будут адекватные замечания и в отношении работы компоненты, будут, соответственно, исправления и изменения…) будет проще скопировать ее в указанное место, чем редактировать шаблон (большинство даже не знает, что это такое) Логика была такой, хотя может и не очень веский аргумент, если трудящиеся попросят, вставлю в шаблон.
Блин, что-то не догоню, как адресно ответить
Подскажите пожалуйста, почему в обработке отсутствует процедура КомандаНабор11, которая зарегистрирована, как обработчик нажатия кнопки «0»?
(6) avz_1C,
Да, не досмотрел просто, банальный косяк. Спасибо большое за замечание! Сегодня поправлю, включая остальные кнопки номеронаберателя. Сейчас не получается загрузить файл, почему-то подвисает страница редактирования, попробую ближе к вечеру по мск.
интересное решение за СИПом будущее, хотим у себя его реализовать в ближайшее время возьму конфигурацию на заметку
(5) очень просто: наводите мышь на сообщение, на которое хотите ответить, появляется ссылка «Ответить» (как на прикрепленном рисунке).
А можно просто указать номер сообщения, на которое отвечаете, в круглых скобках.
P.S. правда, если ваш собеседник не подписался на комментарии темы, то ему все равно на почту не придет уведомление о том, что Вы ему ответили. Ну хотя бы визуально будет понятно, на какой комментарий Вы отвечали.
P.P.S. вижу, что мой ответ опоздал, Вы уже сами все нашли )))
Исправил ошибки во внешней компоненте. Обозвал версию 1.1. Обновите пожалуйста. Могу если, что на мэйл сбросить, кому надо.
(10) Да, сбросьте пожалуйста на почту обновленную ВК, а то я старую скачивал, тогда, когда ещё была выложена обработка только для обычных (неуправляемых) форм.
посмотри BIT.PHONE
вроде тоже самое делает?=)
(12) imm0rtal, вопрос предпочтений, кому интересно тот посмотрит. BIT_Phone тоже бесплатно и открыто? 🙂
(13) не, мысль была наоборот как можно это монетизировать, тема то рульная
sip2all, «Внутренняя ошибка компоненты! По возможности, сообщите, пожалуйста, о ней разработчику!» сообщаю)) отладчик: Телефон_1С.InitEnv() = неопределено. И до кучи при удалении учетки ошибка.
(15) mmoozzgg, Нужно поподробнее. Возможно у Вас старая версия компоненты и обработок. Попробуйте обновить. Обработки не версифицируются — просто ошибки исправляю, если нахожу, а компонента 1.1 — последняя (всего две было). Если метод InitEnv() не отработал, то все остальное тоже работать не будет.
(16) да, действительно версия 1… скачал, пошел тестить…
Добрый день!
Возможно ли использовать эту обработку на одном компьютере (например, из разных баз) одновременно — под разными аккаунтами?
«Ошибка внешней компоненты. Возможно на Вашем компьютере запущен еще один софтфон. Пожалуйста закройте его и перезапустите CH_Com1S заново!
Возможно на Вашем компьютере запущен еще один софтфон. Пожалуйста закройте его и перезапустите CH_Com1S заново!»
Добрый день!
Подскажите, пожалуйста, это возможно — снять ограничение с количества одновременных работающих линий?
(18) URFF, По первому вопросу: нет, в этой редакции работать не будет. По второму — возможно, а для чего? Один человек больше вряд ли обработает. Вызовы, возможно, будут теряться, звонящий будет слышать длинные гудки и вешать трубку не дождавшись ответа. Четыре мне кажется оптимально.
(20) Добрый день!
Как думаете, поставил 5 виртуальных машин (VMware, 5 клонов XP) у каждой свой ip адрес, своя учетная запись SIP провайдера (у меня один номер и пять линий на нём).
С четырез звонит, начиная с пятой не хочет.
Понимаю что компы связаны только общей сетью, базы 1с локальные.. не сталкивались? Спасибо.
(21) URFF, Вы ожидаете, что для каждого последующего внешнего вызова, каким-то чудным образом будет определяться загруженность сип-агента по текущим активным вызовам? Обычно эту функция PBX выполняет. Тот же Asterisk, например. Кстати, разработчики довели его до состояния, что он ставится на раз, думать практически не надо, чуть-чуть разве что. Я думаю, что если Вы тестируете внешними вызовами, и у Вас не установлено дополнительно ничего, то у Вас при входящем «звонят» одновременно все Ваши компы локальной сети, на которых стоят софтфоны. Поэтому только 4.
Кстати, господа!
«На вашем счету меньше 1$m, Вы находитесь в группе отложенного начисления $m. Начисления будут происходить спустя сутки после написания сообщения, если оно не было скрыто модератором.»
Что сие значит, $m мне нужны ? Что можно делать с этими $m, если их вдруг станет больше? Вдруг попрет, а я не в теме… Извините селянина, если что…
Можно скачивать чужие разработки за эту валюту.
при активном разговоре, если поступает звонок то раздается «звук телефона», который очень мешает разговору
(25) mmoozzgg, Спасибо! На этой неделе посмотрю, до конца следующей надеюсь, что и поправлю.
Очень не хватает «сопровождаемой» переадресации звонков.
Подскажите пожалуйста.
Входящие звонки работают, а когда пытаюсь позвонить
ИД = Телефон_1С.MakeСall(ВернутьURL(ПолеВвода), ТекущаяУчетка.ИД);
Возвращает ИД = -1
Значения в отладчике
ВернутьURL(ПолеВвода) «sip:101@192.168.0.56» Строка
ТекущаяУчетка.ИД 2 Число
//——————
И если звоню на IP, то
ИД = Телефон_1С.MakeСall(ВернутьURL(ПолеВвода), 0);
Тоже -1
Где копать?
(28) taramaz, порт сервера или контекст… а 192.168.0.56 это адрес астериска?
(3) наконец то руки дошли до подключения виртуальной АТС Манго-Офис и сразу попал в тупик:
«Ошибка внешней компоненты. Возможно на Вашем компьютере запущен еще один софтфон. Пожалуйста закройте его и перезапустите CH_Com1S заново!»
Все пользователи работают через терминал и пользуются стационарными телефонами. Единственная задача которая стоит — это видеть телефон звонящего и обрабатывать его в 1С, сам разговор и звонки совершать непосредственно со стационарного телефона.
Может быть можно убрать ограничение запущенной одной компоненты на компьютере? Я так понимаю, если не использовать ничего кроме определения номера, то никаких конфликтов не должно возникать?
Крайне интересна работа с Infratel
(30) а зачем софтфон использовать, у него задача совсем другая… ROM-Asterisk есть для Ваших целей.
(32) mmoozzgg, ROM-Asterisk к сожалению работает только с Asterisk по AMI протоколу. В моем же случае это SIP провайдер mango-office
(33) GAMLET, засада… может попытаться у телефонов логи читать? или у шлюза телефонии?
(25) mmoozzgg, у кого-нибудь есть такая-же проблема?
(33) GAMLET, шлюза нет, а вот логи с телефона можно попробовать читать, только это геморойно и задержка будет в отличии от использования подобной компоненты
(28) taramaz, Простите, что не ответил сразу, занят сейчас немного. Такая ситуация, как у Вас может быть, например, в случае, если в списке учетных записей больше чем одна. Текущей установлена в данный момент та, которая неактивна (не зарегистрирована на сипе), а входящий вызов поступает не на текущую, но на активную (прошедшую регистрацию) учетку. Логика компоненты такова, что компонента звонит при поступлении вызова на любую успешно прошедшую регистрация учетку, активной же может быть только одна учетка, и если вызов исходящий, то он именно с нее.
(27) mmoozzgg, «Очень не хватает «сопровождаемой» переадресации звонков.» А что это такое?
(38) Сопровождаемая переадресация — поступает входящий звонок, оператор берет трубку, выясняет на кого необходимо переключить, ставит звонок на удержание, звонит внутреннему абоненту и спрашивает желает ли он поговорить, если да, то оператор кладет трубку, а внешняя линия соединяется с линией внутреннего абонента (внутренний абонент трубку не кладет). как-то так…
(39) mmoozzgg, Так это же есть. И в описании вроде написал…
а «сопровождаемая» переадресация
а «сопровождаемая» переадресация
(40) (40)
Спасибо автору за компоненту и обработку. Интегрирую её в самописную конфигурацию (8.3.5) с телефонией mango.
1. Под 8.3.5 обработка не всегда корректно работает (установка компоненты, вывод сообщений) — но это мелочи, тем более не заявлен интерфейс такси.
2. Почему то при запуске 1С по RDP и использовании обработки метод MakeСall возвращает «-1» (по RDP только один пользователь), при работе на том же компьютере непосредственно с той же базой все ок — вызовы происходят. Это нюанс компоненты или какое-то ограничение (или мои кривые руки :))?
(43) SPID, С RDP здесь народу обещал разобраться. Сейчас работы много, на факультатив времени совсем нет. Надеюсь, что в ближайшее время позанимаюсь. Отпишусь.
Спасибо за труд.
Есть вопрос.
1. Как компонента определяет с каким звуковым устройством работать? Реальная ситуация: поставил на 4 машины с одинаковой конфигурацией. При этом на 3-х все ок, а на одной нет звука от микрофона (когда запускаешь сторонний софтфон — все ОК).
2. В какой то момент банально пропал звук. При этом микшер ВИНОВС7 показывает, что звук есть, но на устройство вывода он не транслируется.
(45) Masich, на станд выводит и не парится
Уважаемые, господа. Поправил все о чем коллектив просил. Теперь на одном компе запускается условно-неограниченное количество экземпляров компоненты, ничего не конфликтует. Оно, правда и раньше запускалось, просто руками надо было различные порты определить. Сейчас добавил компоненте метод, который определяет свободен порт или нет. В коде обработок сами можете посмотреть, там все прозрачно. Кроме того было замечание относительно того, что компонента «звенит» при входящем вызове во время активного разговора. Этот момент поправил. Если с кем-то говорим, то компонента при дополнительном входящем не «звонит», а обработка индицирует входящий вызов на экран «молча».
Да, RDP посмотрите пожалста кто-нибудь. Если, честно, не проверял, но работать обязано…
Спасибо. попробуем.
По RDP: Сразу вопрос: нужна ли звуковая карта на RDP?
Еще вопрос: может ли софтфон компоненты вставать в DND?
Еще по результатам тестирования.
Есть такой момент. Если в момент входа звонка 1С пишет в базу, ищет, либо занята иным важным делом оповещение о входящем вызове уходит «в никуда», т.е. после возврата системы в ожидание оповещение о вызове не обрабатывается. Его как бы не было.
(51) Masich, по DND Сейчас пока нет, чуть позже, когда голосовая почта будет готова. По звуковой карте, нужна ли она где? Там где звук там и либо встроенное, либо карта 🙂
(52) Masich, (52) Masich, Не понял, еще раз если можно
(54)
Управляемое приложение.
1. Выполняется длительное проведение документа.
2. В это время (проведение не окончено) входит звонок. Есть звук входящего вызова (гудок).
3. Оповещение в «ВнешнееСобытие» не поступает. Т.е. не знаем ИД звонка и номер звонящего.
4. Ответить удается просто путем «Поднять трубку» указав ИД в цикле 1 — 10.
(55) Masich, Да ну, во время проведения какие звонки??? Забить и забыть пока не проведется! Зачем вообще принимать звонок в 1с, если нет возможности писать в базу?
(53)
Имеется в виду на RDP сервере звуковая карта нужна ли.
На машине «с наушниками» она естественно есть.
🙂
(57) Masich, конечно нет
(58)
Тогда сразу вопрос:
Нет звука (вход/выход) при работе через RDP. На сервере нет звуковой карты. На локальной машине есть. При этом при запуске 1С на локальной машине все нормально.
Может нужно настройки какие сделать?
(58) не согласен, звуковая карта нужна, настройки только в RDP клиенте о перенаправлении звука с сервера на клиент
Что-то с RDP не взлетело.
Компонента используется в собственной обработке (8.3). При запуске 1С по RDP метод MakeСall возвращает так же «-1», при запуске с физически с этой же машины, все работает.
Еще есть проблема. Может кто сталкивался или автор прояснит.
При открытии обработки выполняется следующая последовательность методов:
InitEnv();
AddAccount();
ReReg();
При закрытии соответственно: DestroyEnv().
При первом открытии обработки все норм. Если закрыть обработку и в рамках этого же сеанса 1С открыть опять, то падает 1С полностью падает.
(61) SPID, По первому вопросу посмотрю. А моя обработка тоже не жужит? По второму — да вроде не падает. Хотя есть небольшая проблемка. Только сейчас заметил. Почему-то при закрытии управляемой формы не отрабатывает метод ПриЗакрытии, соответственно и DestroyEnv() тоже. Это не есть гуд, т.к. последний освобождает зарезервированную память. Может падать по этой причине, хотя я раз 5 перезапустил, вроде все нормуль…
Обработка прикрепленная к статье в 8.3.5 (без совместимостей) не запускается. Нужно немного переделать, если руки дойдут, то обработку из статьи подкручу и попробую.
По отладке DestroyEnv() при закрытии вызывается. При повторном открытии 1С падает на InitEnv(). Возможно это из-за того что я держу компоненту в глобальной переменной и не пере инициализирую её?
Да, мое предположение оказалось верным (может кому еще пригодится) — дописал после DestroyEnv() установку глобальной переменной с компонентой в неопределенно и перезапуск обработки работает как нужно.
сегодня у нас первый рабочий день, и ошибка «Внутренняя ошибка компоненты! По возможности, сообщите, пожалуйста, о ней разработчику!». в прошлом году все работало. Ошибка связана со сменой года?
PS версия компоненты 1.1
скачал свежую, все работает… вопрос открытый остается, а нет ли еще «пасхалок»?
(66) mmoozzgg, «пасхалки» — это что? Умышленных засад точно никаких нет. Я не заметил, стояло ограничение до конца года, но скорее всего предполагалось, что сделаем, что-то грандиозное и вынудить народ обновиться, Грандиозного сделать не успели, ограничение полностью снято. Скачать, кстати можно на нашем пока скромном сйте sip2all.net
например
Ну мало-ли, планы
все еще есть? (так для интереса, какие планы)
Кто в RDP пробовал, заработали исходящие вызовы? Что то у меня упорно не хочет работать в RDP.
(69) а что-то типа скайпа пробовали?
(68) mmoozzgg, Нет НИЧЕГО ! Т.е. ВАЩЕ ! Мамой клянусь 🙂 Изначально целью не ставили ее продавать. Видимо просто произошла небольшая накладка из-за того, что банально не успеваем. Так что можете спать спокойно.
(70) mmoozzgg, Самописная конфигурация с функцией IP телефонии (mango). RDP то пока не требуется, но мало ли…
(71) все, буду спать спокойно)))
(72) SPID, я скайп предложил попробовать для теста RDP подключения, ходит ли звук туда-сюда
(75) mmoozzgg, Дело не в звуке. Дело в том что функция MakeСall возвращает «-1» в RDP, а локально на этой же машине работает хорошо.
(76) SPID, так может проблема из-за звука?
(77) mmoozzgg, не, звук по RDP идет от других приложений.
не получается настроить динамики,
меня слышать, я нет.
Подскажите как настроить.
(40) планируется ли, всё таки, реализация сопровождаемого перевода звонка (attended transfer)?
(80) Gesperid, Может быть позже. Массового спроса на эту фишку нет.
(81) Даешь сопровождаемую переадресацию!
Добавил учетную запись и не чего не происходит
(83) grab2012, А какие у Вас ожидания? Если думаете, что Вам после этого пицу принесут или пополнится Ваш банковский счет, то напрасно.
Здравствуйте. При попытке создать конференцию из 1 удерживаемого и 1 активного звонка не снимается удержание с первого. В чем может быть проблема? У нас собственный Asterisk. Звонки совершаю с «трубок».
Здравствуйте! Не получается заставить работать с Zadarma.com, Регистрация проходит успешно, учетная запись становится активной, но при вызове исходящем ничего не происходит, ни звуков на компе никаких, ни вызова по указанному номеру. При вызове входящем также ничего. Подскажите, что делать? Может логи где-то ведутся?
(86) megasales333, Не знаю, всех же не протестишь. Возможно, надо отдельно разбираться…
(86) megasales333, Все работает. проверьте как проигрывается звук на машине и как записывается с микрофона.
У меня все отлично работает.
Доброго дня.
Еще вопрос: с IAX работает, или только SIP?
(89) Masich, Только SIP.
(90) Спасибо. Еще вопрос: если не секрет, на основе какой библиотеки для работы с SIP написана компонента? Язык создания компоненты C++?
Попробовал, почему то звонок завершается ровно на 30й секунде. Не подскажете в чем проблема?
Подскажите пожалуйста почему при внесении обработки в управляемое приложение, идет такая ошибка — «ошибка получения сведений о внешней обработке CH_Com1s_MenApp.epf при ее загрузке: Метод объекта не обнаружен (СведенияОвнешнейОбработке)»?
(93) alexandrit, Потому что нет функции СведенияОвнешнейОбработке в модуле обработки. Не вносите ее в список внешних обработок. Просто открывайте через Файл — Открыть.
если Native то можно пересобрать под Linux?
(95) djam_arttek, Чего же нет-то, можно, конечно..Только дистрибутиврв многовато, не все же на ебунте сидят. Делать кучу сборок (минимум 3) или лткрывать код? 🙂 Хотя, относительно 3-х сборок (ubuntu, mandriva, centos) можно в ближайшей перспективе подумать.
(94) Masich, Спасибо за подсказку!
(96) есть новости про другие сборки? Можете ли вы поделиться исходниками dll? Не хочется делать автоматизацию за закрытой компоненте
(103) CratosX, Есть другие «звонилки» (например и Раруса и не только) за них надо немного заплатить. А так, чтобы совсем халява…. Коллега Вы в адеквате? Запомните мой юный друг, нет ничего дороже, чем «бесплатно».
(23)
SM — Starm Money
Пользовался программой долгое время, но при обновлении платформы на 8.3.15 выходит ошибка.
Тип не определен (AddIn.CH_Com1S.ServTel)
{ОбщийМодуль.ТелефонияКлиент.Модуль(10)}: Телефон_1С = Новый(«AddIn.CH_Com1S.ServTel»);
Кусок программы:
почему вдруг так случилось?