2015-07-22 3 views
0

Я пытаюсь отправить SMS по протоколу PHP, SMPP и должен использовать библиотеку Net_SMPP. Мой код:Не-латинские символы в SMS (PHP, 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); 

Но по телефону приходит сообщение с тормозным-кодированием (так называемые foursquares).

Таким образом, изменение data_coding по умолчанию

'data_coding' => NET_SMPP_ENCODING_DEFAULT 

дает сообщение "1f04400438043204350442042100" (шестигранный-код моего сообщения).

Что я ошибся?

+0

http://stackoverflow.com/questions/27599/reliable-sms-unicode-gsm-encoding-in-php –

+0

приятно. Вы также можете использовать сервер SMPP, размещенный в вашей базе данных, а затем вам нужно только отправить смс в вашу базу данных, а сброс будет отвечать сервером за управление смс. –

+0

Какой клиент вы используете для этого? – Borsn

ответ

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);