exports.sendSMS = function (session, to, text, sourceAddress, jsonMessageHistoryIds, callback) {
console.log('messege',text);
session.submit_multi({
source_addr: sourceAddress,
dest_address: to,
short_message: text
}, function (pdu) {
console.log('submit_multi: ', pdu.command_status);
console.log("PDU", pdu);
if (pdu.command_status == 0) {
// insert into sms smpp logs
var values = {
type: 'bulk',
message: text,
numbers: JSON.stringify(to)
};
console.log(pdu.message_id);
callback(null, pdu.message_id);
}
});
};
如果messege低于160个字符则为okey .Messege将被发送,但如果messege超过160个字符,那么如果sms messege太长,它将抛出新的TypeError值参数超出buffer.js的范围。请帮助。非常感谢任何帮助
答案 0 :(得分:1)
通过这个问题解决了这个问题..希望有一天能帮助某人
npm install gsm
The above module also splits the message into parts:
//We need to split the message and send it in many parts
var gsm = require('gsm');
var info = gsm("Your message string here");
//This is a unique id present in each message part
var concat_ref = this.concat_ref++;
var part_id = 0;
info.parts.forEach(function(part) {
part_id++;
var udh = new Buffer(6);
udh.write(String.fromCharCode(0x5), 0); //Length of UDF
udh.write(String.fromCharCode(0x0), 1); //Indicator for concatenated message
udh.write(String.fromCharCode(0x3), 2); // Subheader Length ( 3 bytes)
udh.write(String.fromCharCode(concat_ref), 3); //Same reference for all concatenated messages
udh.write(String.fromCharCode(info.sms_count), 4); //Number of total messages in the concatenation
udh.write(String.fromCharCode(part_id), 5); //Sequence number ( used by the mobile to concatenate the split messages)
var submit_pdu = {
source_addr:msg.from,
destination_addr: msg.to,
short_message: { udh:udh, message:part },
registered_delivery:1 //If you want a delivery report
};
this.getSession().submit_sm(submit_pdu, function(pdu) {
if (pdu.command_status == 0) {
console.log("SMPP Gateway[" + this.getOptions().address + "] - SUMBIT[" + submit_pdu.source_addr + ">>>" + submit_pdu.destination_addr + "] - " + pdu.message_id);
}
if(callback) {
callback(pdu);
}
}.bind(this));
}.bind(this));
答案 1 :(得分:0)
您可以使用官方 SMPP 的 specification 中所述的 message_payload
参数(字段名称)来发送超过 254 个八位字节的消息。
message_payload
定义:
包含扩展的短消息用户数据。最多 64K 个八位字节 传送。
官方文档说:
<块引用>需要发送超过 254 个八位字节的消息的应用程序应该 使用 message_payload 参数。在这种情况下 sm_length 字段 应设置为零。
短消息数据应该插入到short_message 或 message_payload 字段。不得同时使用这两个字段 同时。
我用 node-smpp 做了一个测试,它工作正常。无需串联。