Нелатинские символы в SMS (PHP, SMPP)

Я пытаюсь отправить SMS по протоколу PHP, SMPP и должен использовать библиотеку Net_SMPP. Мой код:

$smsc = new Net_SMPP_Client('xxx.xxx.xxx.xxx', xxxx);

// Make the TCP connection first
$smsc->connect();

// Now bind to the SMSC. bind() and unbind() return the response PDU.
$resp = $smsc->bind(array(
'system_id' => '*****',
'password' => '*******',
'system_type' => ''
));
$message = "Привет!";
$message=iconv("utf-8", "UCS-2", $message);
$message=bin2hex ($message);

$ssm = Net_SMPP::PDU('submit_sm', array(
'source_addr_ton'   => NET_SMPP_TON_ALNUM,
'dest_addr_ton'     => NET_SMPP_TON_INTL,
'source_addr'       => 'AnyName',
'destination_addr' => '7**********',
'short_message'     => $message,
'dest_addr_npi' => 0x01,
'data_coding' => NET_SMPP_ENCODING_ISO10646 //UCS2 coding
));
$smsc->sendPDU($ssm);

Но по телефону приходит сообщение с кодировкой торможения (так называемые четырехугольники).

Итак, изменение data_coding по умолчанию

'data_coding' => NET_SMPP_ENCODING_DEFAULT

выдает сообщение «1f04400438043204350442042100» (шестнадцатеричный код моего сообщения).

Что я пошел не так?

0

Решение

Решено!

$smsc = new Net_SMPP_Client('xxx.xxx.xxx.xxx', xxxx);

// Make the TCP connection first
$smsc->connect();

// Now bind to the SMSC. bind() and unbind() return the response PDU.
$resp = $smsc->bind(array(
'system_id' => '*****',
'password' => '*******',
'system_type' => ''
));
$message = "Привет!";
$message = iconv('utf-8', "UTF-16BE", $message);
$ssm = Net_SMPP::PDU('submit_sm', array(
'source_addr_ton' => NET_SMPP_TON_ALNUM,
'dest_addr_ton' => NET_SMPP_TON_INTL,
'source_addr' => 'Kristall',
'destination_addr' => '7**********',
'short_message' => $message,
'source_addr_npi' => NET_SMPP_NPI_ISDN,
'dest_addr_npi' => NET_SMPP_NPI_ISDN,
'data_coding' => NET_SMPP_ENCODING_ISO10646
));

$smsc->sendPDU($ssm);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]