Доработка функционала click-to-call

Добрый день. 

 

1. Нужно сделать такую фичу: Есть текстовое поле в объекте, в нем будет записан номер телефона. Нужно добавить возможность при клике на это поле чтобы к номеру который записан, поставился префикс(сам префикс нужно подставить из значения справочника, которое указано в этой же записи в объекте и чтобы пошел вызов уже на телефонию с номером и префиком. То есть нужно сделать поле типа https://prnt.sc/674k8tmq1urH и возможность склеивать с префиксом. Какие стили нужно добавить на поле с номером телефона, чтобы в нем появилась возможность звонка? И какой метод, чтобы склеивать номер после клика на звонок? Есть пример документации или реализации?

 

2. Такая же задача, только для миникарточки клиента https://prnt.sc/sjPhFjMk58Jm Какой метод и схему нужно переопределить, чтобы добавить в миникарточку возможность подставить в номер префикс и отправить запрос на звонок уже с подставленным префиксом к номеру.



Это все относиться к телефонии Asterisk. 

Спасибо!

Нравится

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

Добрый день!

Для первой задачи в diff (в схеме ContactPageV2) для вашего поля нужно добавить следующее параметры:

"values": {
					"showValueAsLink": true,
					"linkclick": {
						"bindTo": "onCallClickWithPrefix"
					},
					"href": {
        				"bindTo": "UsrTestReq",
        				"bindConfig": {"converter": "getUsrTestReqLink"}
					},

При этом в методах нужно добавить:

getUsrTestReqLink: function(value) {
				return {
					url: value,
					caption: value
				};
			},
			onCallClickWithPrefix: function(number) {
				/*
					Getting the needed prefix;
					var prefix = ---
				*/
				number = 'prefix' + number;
				return this.callContact(number, this.$Id, this.$Account);
			}

Для второй задачи рекомендую обратить внимание на уже имеющуюся кнопку звонка в схеме ContactMiniPage пакета CrtUIv2:

{
				"operation": "insert",
				"name": "ContactButtonsContainer",
				"parentName": "HeaderContainer",
				"propertyName": "items",
				"values": {
					"visible": {"bindTo": "isViewMode"},
					"wrapClass": ["header-buttons"],
					"itemType": Terrasoft.ViewItemType.CONTAINER,
					"items": [
						{
							"name": "CurrentContactCallButton",
							"itemType": Terrasoft.ViewItemType.BUTTON,
							"imageConfig": miniPageResources.resources.localizableImages.CallButtonImage,
							"extendedMenu": {
								"Name": "Call",
								"PropertyName": "CurrentContact",
								"Click": {"bindTo": "prepareCallButtonMenu"}
							}
						},

При нажатии на номер срабатывает метод extendedCallMenuItemClick схемы CallExtendedMenu, который и вызывает событие звонка через this.sandbox.publish("CallCustomer"

Если вы хотите при нажатии на вашу колонку совершать звонок, то необходимо реализовать похожую логику.

Добрый день!

Для первой задачи в diff (в схеме ContactPageV2) для вашего поля нужно добавить следующее параметры:

"values": {
					"showValueAsLink": true,
					"linkclick": {
						"bindTo": "onCallClickWithPrefix"
					},
					"href": {
        				"bindTo": "UsrTestReq",
        				"bindConfig": {"converter": "getUsrTestReqLink"}
					},

При этом в методах нужно добавить:

getUsrTestReqLink: function(value) {
				return {
					url: value,
					caption: value
				};
			},
			onCallClickWithPrefix: function(number) {
				/*
					Getting the needed prefix;
					var prefix = ---
				*/
				number = 'prefix' + number;
				return this.callContact(number, this.$Id, this.$Account);
			}

Для второй задачи рекомендую обратить внимание на уже имеющуюся кнопку звонка в схеме ContactMiniPage пакета CrtUIv2:

{
				"operation": "insert",
				"name": "ContactButtonsContainer",
				"parentName": "HeaderContainer",
				"propertyName": "items",
				"values": {
					"visible": {"bindTo": "isViewMode"},
					"wrapClass": ["header-buttons"],
					"itemType": Terrasoft.ViewItemType.CONTAINER,
					"items": [
						{
							"name": "CurrentContactCallButton",
							"itemType": Terrasoft.ViewItemType.BUTTON,
							"imageConfig": miniPageResources.resources.localizableImages.CallButtonImage,
							"extendedMenu": {
								"Name": "Call",
								"PropertyName": "CurrentContact",
								"Click": {"bindTo": "prepareCallButtonMenu"}
							}
						},

При нажатии на номер срабатывает метод extendedCallMenuItemClick схемы CallExtendedMenu, который и вызывает событие звонка через this.sandbox.publish("CallCustomer"

Если вы хотите при нажатии на вашу колонку совершать звонок, то необходимо реализовать похожую логику.

добрый день.

спасибо за помощь. мы делаем изменения на странице заказов Order и там нету метода 

this.callContact

можете подсказать как получить его в заказе или другой способ?

спасибо!

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