Здравствуйте.

Как я могу реализовать следующую задачу: Необходимо в панель звонка добавить кнопку "Создать заказ" и при нажатии чтобы формировался заказ с заполненными полями из звонка.

Прикрепленные файлы

Нравится

1 комментарий

Здравствуйте!

Для решения вопроса вам необходимо переопределить схему CommunicationHistoryItem и в ней добавить метод для добавления нового заказа, к примеру:

onCreateNewOrderMenuItemClick: function() {

                        this.openNewRecordCard("Order", "OrderPageV2");

                    },

Далее в блоке diff добавить кнопку внутри элемента CreateLinkButton в items:

{

                                        "id": "CreateNewOrder",

                                        "caption": {"bindTo": "Resources.Strings.CreateNewOrderMenuItemCaption"},

                                        "tag": "Order",

                                        "click": {"bindTo": "onCreateNewOrderMenuItemClick"}

                                    },

                                    

За пример реализации можете взять кнопку CreateNewContact.

Показать все комментарии

Рады представить новое дополнение для интеграции с телефонией Asterisk!

 

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

 

Дополнение работает со всеми версиями Астериск. Использовать можно как совместно, так и раздельно с Asterisk Connector for Creatio.

 

Детали на сайте!

Нравится

Поделиться

0 комментариев
Показать все комментарии

В р. Звонки реализована логика прослушивания звонка на удаленном ресурсе по ссылке. 

Вопрос: как вместе с ссылкой передать параметры аутентификации? Например, BaseAuth

Нравится

2 комментария

Игорь, например, в Oktell вместо этого используют параметр temppass:

<<< gettemphttppass

Запрос из CRM в Oktell. Генерирует и возвращает временный пароль на доступ к HTTP веб-серверу без авторизации. Временный пароль живет не более 10 секунд до первого обращения к HTTP с указанием этого пароля среди параметров запроса. Пароль привязывается к IP адресу дополнительно. После этого вне зависимости от способа авторизации, установленного для HTTP веб-сервера Oktell, однократный вызов любого метода серверного веб-интерфейса возможен без авторизации с указанием среди параметров дополнительного служебного параметра temppass=A, где A - выданный временный пароль.

Доступно для схемы интеграции 2 и схемы интеграции 3 в рамках индивидуальных подключений.

[
 "gettemphttppass",
 {
  "qid": "21D38282-DFB7-4DEF-8C76-BFB338A80947",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "responsetowebsock": true
 }
]



>>> gettemphttppassresult

Ответ из Oktell в CRM. Возвращает системный внутренний номер указанного в суб-параметре пользователя.

[
 "gettemphttppassresult",
 {
  "qid": "21D38282-DFB7-4DEF-8C76-BFB338A80947",
  "userlogin": "Иванов",
  "userid": "3357F4D2-B37C-4809-9A1A-E4D64808DE1B",
  "password": "6f3200ac"
 }
]
//* password - временный пароль для подстановки в качестве значения параметра temppass 
		при осуществлении GET или POST запроса к HTTP веб-серверу Oktell.
		Следует иметь в виду, что даже в случае POST запроса со специальным контентом
		указание параметра-пароля возможно в теле самой страницы (по аналогии с GET запросом).

А в схеме OktellModule и в OktellCtiProvider с этой функцией Oktell работают.

Добрый день

Максим, я не знаю какую телефонию вы используете, но в Creatio для прослушивания звонков используется HTML элемент Audio. Сам элемент "умеет" авторизоваться.

https://developer.mozilla.org/ru/docs/Web/HTML/Element/audio#attr-crossorigin

 

Для тестов вы можете сделать пустую html страничку с этим элементом и попробовать передать авторизационные куки. Потом в Creatio можно доработать компонент под ваши нужды

Показать все комментарии

Всем добрый день! 

Реализовал в заказе/лиде кнопку звонка - http://prntscr.com/ngpc8u

звонок вызываю через публикацию CallCustomer:

 

this.sandbox.publish("CallCustomer", {
					number: mobilePhone, 
					customerId: Terrasoft.SysValue.CURRENT_USER.value, 
					entitySchemaName: "Lead",
					callRelationFields: undefined
				});

 Какие параметры необходимо добавить что бы в звонке сохранился либо Лид/Заказ  + Контакт заказа если звоним из Заказа - http://prntscr.com/ngpenx ?

Или необходимо использовать другой метод?

Заранее благодарен.

Нравится

9 комментариев
Лучший ответ

Перед отправкой сообщения сохраните ваш конфиг в "AdvisedIdentifiedSubscriberInfo", те

 

this.set("AdvisedIdentifiedSubscriberInfo", {

number: _nomer, 
                    customerId: this.get("Id"), 
                    entitySchemaName: "Lead",
                    callRelationFields: ...

});

 

Если не поможет (Насколько понимаю каждая интеграция с телефонией реализована по своему, возможно что запись в базу информации о звонке реализована напрямую из dll инсертами) то посмотрите что поступает в БД через sql профайлер и что за запросу идут через сервисы во вкладке Netwoork браузера. Возможно вам придется  найти Id звонка и обновить нужные вам поля в объекте.

Добрый день!

Попробуйте передать данные поля в callRelationFields. Это массив из объектов, типа:

{
	name: columnName,
	value: columnValue,
	type: this.Terrasoft.DataValueType.GUID
}

 

Сидоров Александр В.,

this.sandbox.publish("CallCustomer", {
					number: mobilePhone, 
					customerId: Terrasoft.SysValue.CURRENT_USER.value, 
					entitySchemaName: "Lead",
					callRelationFields: [{
						name: "Lead",
						value: leadId,
						type: this.Terrasoft.DataValueType.GUID
					}]
				});

Подставил параметры, не помогло, что не так?

Нигрескул Алексей,

Посмотрите, какие поля приходят в метод updateCallByIdentificationData схемы CtiPanelIdentificationUtilities. Может быть там возникают ошибки

Насколько я понимаю в customerId должна быть Id вашего Lead  с которого совершается звонок те набор полей customerId и EntitySchemaName вы определяете схему и идентификатор записи к которой будут добавлен набор полей из callRelationFields

Григорий Чех,

Передавал  customerId: leadId, entitySchemaName: "Lead" не помогло

Добавить комментарий

Сидоров Александр В.,

Продебажил данный метод, он даже не срабатывает при вызове через публикацию CallCustomer.

Перед отправкой сообщения сохраните ваш конфиг в "AdvisedIdentifiedSubscriberInfo", те

 

this.set("AdvisedIdentifiedSubscriberInfo", {

number: _nomer, 
                    customerId: this.get("Id"), 
                    entitySchemaName: "Lead",
                    callRelationFields: ...

});

 

Если не поможет (Насколько понимаю каждая интеграция с телефонией реализована по своему, возможно что запись в базу информации о звонке реализована напрямую из dll инсертами) то посмотрите что поступает в БД через sql профайлер и что за запросу идут через сервисы во вкладке Netwoork браузера. Возможно вам придется  найти Id звонка и обновить нужные вам поля в объекте.

Благодарю, попробую. Id звонка не проблема получить, переопределил схему CtiPanel, переопределил метод onCallSavedEvent и в нем по сути получаю звонок, и тут можно пушить в sandbox и подписываться там где нужно, ну это теоретически, Нужно только подумать как отловить нужную публикацию. Телефония Webitel. Может есть идеи по данному поводу, как отлавливать звонок, вот получаю лог звонка из переопределенного метода onCallSavedEvent - http://prntscr.com/ngvqpx. Просмотрел объект зацепится не за что, у кого какие идеи,заранее благодарен!

Вы пробовали сохранить в this.get("AdvisedIdentifiedSubscriberInfo") конфиг звонка включая поля которые вам нужно сохранить в карточке звонка?

Посмотрите при  сохранении что попадает в identificationFieldsData

 

Показать все комментарии

Вопрос:

Как реализовать отображение кнопки "Прослушать" в разделе Звонки?

Запись звонка создана, прикреплен аудиофайл mp3, также есть ссылка на mp3 специально для этой кнопки. Как эту кнопку вывести?

Ответ:

Для прослушивания звонков используется базовый аудиоплеер HTML5. Пример его использования Вы можете посмотреть в схеме CallSectionV2 из пакет CTIBase. Поиск выполняйте по слову audio.

Нравится

Поделиться

2 комментария

Каким образом реализовать передачу данных авторизации на удаленном сервере при получении потока?

 

Пожалуйста, опишите свой случай подробнее.

Показать все комментарии

Вопрос:

Заметил, что при звонке из продажи звонок уже привязывается к продаже. 

А к новому разделу будет привязываться если в карточке звонка добавить поле справочное с ссылкой? Где есть возможность добавить новый раздел в список тех разделов к которым идет привязка?

Ответ:

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



В этом случае необходимо будет добавить средствами разработки связь для доп. разделов. 

Ниже указан пример добавления дополнительного раздела на примере раздела "Счета":

Изображение удалено.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Изображение удалено.

Нравится

Поделиться

0 комментариев
Показать все комментарии

Здравствуйте коллеги! Подскажите пожалуйста, как можно вставить аудио плеер в реестр карточки звонков, что бы прослушать уже имеющуюся запись. Копал в сторону модуля AudioPlayer, но что то особо ничего хорошего не вышло. 

Нравится

2 комментария

Пока нашел следующее решение, но если кто то знает более лучший способ, буду рад, если вы поделитесь! 

Создаем замещающую схему CallPageV2 и добавляем туда в diff:

{
    "operation": "insert",
    "parentName": "GeneralInfoTabGroup74451b35",
    "name": "AudioPlayer",
    "propertyName": "items",
    "values": {
        "itemType": Terrasoft.ViewItemType.CONTAINER,
        "generator": function() {
            return {
                "selectors": {
                    "wrapEl": "#AudioPlayer",
                    "iframeEl": "id_AudioPlayer"
                },
                "className": "Terrasoft.HtmlControl",
                "html": "&lt;audio style=\"display:none;\" controls=\"controls\"&gt;&lt;source " +
                "src=\"\" type=\"audio/ogg\" /&gt;&lt;/audio&gt;"
            };
        },
        "layout": {
            "colSpan": 12,
            "rowSpan": 1,
            "column": 0,
            "row": 0
        }
    }
}

(parentName замените на свой)

И в методы:

"generateAudioPlayer": function(audioUrl) {
    if (audioUrl.length &gt;= 12) {
        var audioSource = document.querySelector("Source");
        if (audioSource) {
            audioSource.src = audioUrl;
            var audioBlock = document.querySelector("audio");
            audioBlock.style = "style=\"display:hidden;\"";
        }
    }
}

Далее вызываем новый метод из инициализации карточки, передавая ему ссылку на наше аудио: 

"onEntityInitialized": function() {
    this.callParent(arguments);
 
    var callAudioUrl = this.get("UsrAudio");
    this.generateAudioPlayer(callAudioUrl);
}

Добрый день, в вашем случае вы напрямую используете тэг audio из HTML. Также рекомендую вам посмотреть в сторону использования компонента Terrasoft.AudioPlayer. Пример использования можно увидеть в схеме CallSectionV2:

{
   "operation": "insert",
   "name": "AudioPlayer",
   "parentName": "DataGrid",
   "propertyName": "activeRowActions",
   "index": 1,
   "values": {
      "className": "Terrasoft.AudioPlayer",
      "selectors": {"wrapEl": "#AudioPlayer"},
      "sourceId": {"bindTo": "getSourceId"},
      "sourceUrl": {"bindTo": "SourceUrl"},
      "playbackended": {"bindTo": "onPlaybackEnded"},
      "error": {"bindTo": "onPlayError"}
   }
},

Также часть логики расположена в схеме CallSectionGridRowViewModel.

 

Показать все комментарии

Собрали в едином документе ответы на основные вопросы связанные с подключением bpm'online к webitel callmanager, а именно:

  1. Как установить пакет webitel callmanager
  2. Как подключить webitel
  3. Как создаются пользователи
  4. Как отобразить базовый раздел "Звонки"
  5. Как перенести все звонки, включая и те, когда пользователь не был зарегестрирован в bpm'online

Каждый пункт сопровождается кратким видео роликом.

Нравится

Поделиться

2 комментария

А как обновить пакет? Просто поставить новую версию поверх имеющейся через раздел Установка и удаление приложений, или сначала удалить старую версию пакета, а затем поставить новую версию пакета? Нужно ли "компилировать все" после этого в Конфигураторе?

Andrey Sotov,

Здравствуйте.

Для обновления пакетов Webitel для bpm'online необходимо сначала удалить старый пакет, после чего установить новый. После установки, необходимо запустить процесс Get calls analitycs. При этом перекомпилировать систему или вносить изменения в какие-либо настройки не требуется. 

Исключением могут быть случаи, когда в bpm'online  присутствуют какие-либо доработки. Тогда, при переустановке пакета может возникнуть необходимость так же выполнять действия, согласно спецификации конкретных доработок. 

С уважением,

Служба технической поддержки, Webitel

Показать все комментарии

В новой версии webitel мы добавили возможность не только генерировать голос из текста, но и распознавать речь в текст. Поддерживается большое количество языков (умеет распознавать русский и украинский язык). Пока документация в процессе подготовки нового релиза, продемонстрирую на примере создания Лида в bpm'onilne из webitel.

Нравится

Поделиться

0 комментариев
Показать все комментарии

Добрый день.
Такой вопрос. В Террасофт 3.Х бизнес процессы реализованы под задачи, каким образом Процессы привязать к Звонкам, к результатам?

Нравится

1 комментарий

Здравствуйте, Вадим!

Для решения описанной задачи Вам нужно реализовать новый WorkflowAction по аналогии с wa_TaskAction (это WorkflowAction для работы с задачами по процессу).

Более подробное описание, как это сделать, Вы можете найти в руководстве администратора п. 6.6.2 по ссылке:

http://ftp.bpmonline.com/support/downloads/Doc&Manuals/Terrasoft3X_Docu…

Показать все комментарии