2014-06-15 4 views
0

SMPP와 함께 긴 SMS를 보내고 싶습니다. https://github.com/agladkov/php-smpp/tree/masterSMPP : UDH (User Data Header)가 SMS 본체에 나타납니다

과 문서 나 SMS를받을 때 그들이 연결된되지 http://opensmpp.org/specs/smppv34_gsmumts_ig_v10.pdf

:이 클래스의 PHP-SMPP를 사용합니다. 각 SMS는 시작 부분에 다음과 같은 문자를 포함합니다 : é ¥ ò @ $$ (첫번째 SMS)를하고 é @ ¥ $$$ (초 SMS) 는 이러한 문자가 UDH에 해당

(UDH을 가능하게하기위한

esm_class의 = 0x40입니다)

public function sendSMS(SmppAddress $from, SmppAddress $to, $message, $tags=null, $dataCoding=SMPP::DATA_CODING_ISO8859_1, $priority=0x00, $scheduleDeliveryTime=null, $validityPeriod=null) 
{ 
... 

    $seqnum = 1; 
    foreach ($parts as $part) 
    { 
     $udh = pack('cccccc',5,0,3,substr($csmsReference,1,1),count($parts),$seqnum); 
     $res = $this->submit_sm($from, $to, $udh.$part, $tags, $dataCoding, $priority,  $scheduleDeliveryTime, $validityPeriod, (SmppClient::$sms_esm_class|0x40)); 
     $seqnum++; 
    } 
... 
} 


protected function submit_sm(SmppAddress $source, SmppAddress $destination, $short_message=null, $tags=null, $dataCoding=SMPP::DATA_CODING_DEFAULT, $priority=0x00, $scheduleDeliveryTime=null, $validityPeriod=null, $esmClass=null) 
{ 
    if (is_null($esmClass)) $esmClass = self::$sms_esm_class; 

    // Construct PDU with mandatory fields 
    $pdu = pack('a2cca'.(strlen($source->value)+1).'cca'.(strlen($destination->value)+1).'ccc'.($scheduleDeliveryTime ? 'a16x' : 'a1').($validityPeriod ? 'a16x' : 'a1').'ccccca'.(strlen($short_message)+(self::$sms_null_terminate_octetstrings ? 1 : 0)), 
     self::$sms_service_type, 
     $source->ton, 
     $source->npi, 
     $source->value, 
     $destination->ton, 
     $destination->npi, 
     $destination->value, 
     $esmClass, 
     self::$sms_protocol_id, 
     $priority, 
     $scheduleDeliveryTime, 
     $validityPeriod, 
     self::$sms_registered_delivery_flag, 
     self::$sms_replace_if_present_flag, 
     $dataCoding, 
     self::$sms_sm_default_msg_id, 
     strlen($short_message),//sm_length 
     $short_message//short_message 
    ); 

    // Add any tags 
    if (!empty($tags)) { 
     foreach ($tags as $tag) { 
      $pdu .= $tag->getBinary(); 
     } 
    } 

    $response=$this->sendCommand(SMPP::SUBMIT_SM,$pdu); 
    $body = unpack("a*msgid",$response->body); 
    return $body['msgid']; 
} 

도움을 주시면 감사하겠습니다.

답변

0

"esme"에서 UDH 조각 지원을 추가했을 때 같은 문제가있었습니다. 하지만 내 문제는 UDHI가 무시 당했다는 것이다. MS에서 잘못된 SMS를받는다면 널리 사용되기 때문에 SAR 조각화를 구현할 수 있습니다. SAR 단편화는 매우 유사하지만 sar_ *로 시작하는 선택적 TLV 매개 변수를 설정해야합니다.