2namespace Bitrix\MessageService\Sender\Sms;
6use Bitrix\Main\Localization\Loc;
7use Bitrix\Main\ModuleManager;
8use Bitrix\MessageService;
9use Bitrix\MessageService\Internal\Entity\RestAppLangTable;
10use Bitrix\MessageService\Internal\Entity\RestAppTable;
11use Bitrix\MessageService\Sender;
12use Bitrix\MessageService\Sender\Result;
15Loc::loadMessages(__FILE__);
19 public const ID =
'rest';
35 return Loc::getMessage(
'MESSAGESERVICE_SENDER_SMS_REST_NAME');
55 return $firstRecord !==
null;
73 'id' => $row[
'APP_ID'].
'|'.$row[
'CODE'],
74 'name' => sprintf(
'[%s] %s',
75 $this->getLangField($row[
'ID'],
'APP_NAME'),
76 $this->getLangField($row[
'ID'],
'NAME')
78 'description' => $this->getLangField($row[
'ID'],
'DESCRIPTION')
86 [$appId,
$code] = explode(
'|', $from);
97 return $restSender !==
false;
106 $sendResult->addError(
new Error(Loc::getMessage(
'MESSAGESERVICE_SENDER_SMS_REST_ERROR_APP_NOT_FOUND')));
127 $sendResult->addError(
new Error(Loc::getMessage(
'MESSAGESERVICE_SENDER_SMS_REST_ERROR_APP_NOT_FOUND')));
138 $dbRes = \Bitrix\Rest\AppTable::getList([
140 '=CLIENT_ID' => $restSender[
'APP_ID'],
147 $sendResult->addError(
new Error(Loc::getMessage(
'MESSAGESERVICE_SENDER_SMS_REST_ERROR_APP_NOT_FOUND')));
152 if($appStatus[
'PAYMENT_ALLOW'] ===
'N')
154 $sendResult->addError(
new Error(Loc::getMessage(
'MESSAGESERVICE_SENDER_SMS_REST_ERROR_PAYMENT_ALLOW')));
159 'CODE' => $restSender[
'CODE'],
162 "application_token" => \CRestUtil::getApplicationToken(
$application),
174 $restData[
'properties'] = [
178 $restData[
'type'] = $restSender[
'TYPE'];
179 $restData[
'code'] = $restSender[
'CODE'];
183 $restData[
'ts'] = time();
187 $restSender[
'APP_ID'],
188 $restSender[
'HANDLER'],
192 "sendAuth" => (
bool)
$auth,
193 "sendRefreshToken" =>
false,
207 'sendRest' . $restSender[
'TYPE'],
213 if (is_callable([
'\Bitrix\Rest\UsageStatTable',
'logMessage']))
224 $status = parent::resolveStatus($serviceStatus);
226 switch ((
string)$serviceStatus)
248 private function getLangField($appId, $fieldName)
250 $fields = $this->getAppLangFields($appId);
256 $fieldLangs =
$fields[$fieldName];
257 if (isset($fieldLangs[LANGUAGE_ID]))
259 return $fieldLangs[LANGUAGE_ID];
263 $defaultLang = Loc::getDefaultLang(LANGUAGE_ID);
264 if (isset($fieldLangs[$defaultLang]))
266 return $fieldLangs[$defaultLang];
269 return $fieldLangs[
'**'];
272 private function getAppLangFields($appId)
274 if (static::$langFields ===
null)
276 $orm = RestAppLangTable::getList();
277 while ($row = $orm->fetch())
279 static::$langFields[$row[
'APP_ID']][
'NAME'][$row[
'LANGUAGE_ID']] = $row[
'NAME'];
280 static::$langFields[$row[
'APP_ID']][
'APP_NAME'][$row[
'LANGUAGE_ID']] = $row[
'APP_NAME'];
281 static::$langFields[$row[
'APP_ID']][
'DESCRIPTION'][$row[
'LANGUAGE_ID']] = $row[
'DESCRIPTION'];
285 return static::$langFields[$appId] ??
null;
288 private function setExternalMessageId(
int $internalId,
string $externalId): void
290 MessageService\Internal\Entity\MessageTable::update($internalId, [
291 'EXTERNAL_ID' => $externalId
if(! $messageFields||!isset($messageFields['message_id'])||!isset($messageFields['status'])||!CModule::IncludeModule("messageservice")) $messageId
static includeModule($moduleName)
static isModuleInstalled($moduleName)
static getList(array $parameters=array())
prepareMessageBodyForSend(string $text)
sendMessage(array $messageFields)
static resolveStatus($serviceStatus)
static getAppStatusInfo($app, $detailUrl)
static queryItem($clientId, $url, $data, array $authData=array(), array $additional=array())
static logMessage($clientId, $messageType)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
if(!is_null($config))($config as $configItem)(! $configItem->isVisible()) $code
AddEventToStatFile($module, $action, $tag, $label, $action_type='', $user_id=null)