Кто-нибудь, поделитесь рабочим php-кодом, для добавления нового телефона в CRM Контакт. Предполагается использование этого кода внутри бизнес-процесса. Ну или обновление информации для других сущностей CRM. Думаю там уже можно будет разобраться...
Наверное, с REST это решается проще. Но, к сожалению, пока с ним так и не подружился...
В догонку... Переменная с телефонным номером из сообщения выше ($cont_phone) берется из строкового поля, заполняемого при запуске БП. Инициатор может указать телефон через 8, может использовать скобки, пробелы или дефисы (8 (999) 111-11-11, +7 999 1111111). Можно ли как-то строку переформатировать, чтобы привести ее к стандартному виду? Например: +79990000000 (то есть убрать все скобки, пробелы и т. д.)
<?php
use Bitrix\Main\PhoneNumber\Format;
use Bitrix\Main\PhoneNumber\Parser;
$phone = '89011111111';
// Парсим номер телефона с помощью класса-парсера
$parsedPhone = Parser::getInstance()->parse($phone);
// Из объекта распарсенного телефона можно получить разное. Например код страны
echo $parsedPhone->getCountry(); // RU
// или ... опять код страны
echo $parsedPhone->getCountryCode(); // 7
// или тип номера, возможные типы:
// 'noInternationalDialling', 'areaCodeOptional', 'fixedLine',
// 'mobile', 'pager', 'tollFree', 'premiumRate', 'sharedCost',
// 'personalNumber', 'voip', 'uan', 'voicemail'
echo $parsedPhone->getNumberType(); // mobile
// Ну или оригинальный телефон, который был скормлен парсеру
echo $parsedPhone->getRawNumber(); // 89011111111
// А можно переформатировать объект телефона в один из поддерживаемых форматов
// Национальный, видимо "наш"
echo $parsedPhone->format(Format::NATIONAL);
// Международный
echo $parsedPhone->format(Format::INTERNATIONAL);
// Ну и более-менее стандартизированный по https://ru.wikipedia.org/wiki/E.164
echo $parsedPhone->format(Format::E164);
// А еще есть парсинг коротких номеров
echo Parser::getInstance()->parse('911')->format(); //9-11
Владимир Осипов написал: Но на конструкции вида $parsedPhone = Parser::getInstance()->parse($phone); php отвечает сообщением об ошибке... Пока не удалось этот метод реализовать.
CModule::IncludeModule('main');
use Bitrix\Main\PhoneNumber\Format;
use Bitrix\Main\PhoneNumber\Parser;
$phone = '89011111111';
$parsed = Parser::getInstance()->parse($phone);
echo $parsed;
Ошибка:
Код
[ErrorException] E_RECOVERABLE_ERROR
Object of class Bitrix\Main\PhoneNumber\PhoneNumber could not be converted to string (0)
/home/bitrix/www/bitrix/modules/main/admin/php_command_line.php(135) : eval()'d code:7
#0: eval
/home/bitrix/www/bitrix/modules/main/admin/php_command_line.php:135
#1: require_once(string)
/home/bitrix/www/bitrix/admin/php_command_line.php:2
Владимир Осипов написал: [ErrorException] E_RECOVERABLE_ERROR Object of class Bitrix\Main\PhoneNumber\PhoneNumber could not be converted to string (0)
у вас переменная $parsed - это объект. вот пхп и ругается, что не может его вывести через оператор echo, потому что он не строчный. так должно отработать:
Код
echo $parsed->format(Format::INTERNATIONAL);
если хотите весь объект посмотреть, то: пользуйте не echo, а print_r()