0. deminded 7 28.08.15 17:56 Сейчас в теме

Развитие отправки СМС через SMPP

Обработка поможет разобраться в настройке отправки СМС через протокол SMPP.
В основе взята обработка этой публикации: http://infostart.ru/public/380146/

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо
1. Prooa 59 10.11.15 05:58 Сейчас в теме
А можно код процедуры СобратьПакет_Query_SM, очень нужно
2. deminded 7 10.11.15 12:16 Сейчас в теме
(1) Prooa,

Функция СобратьПакет_Query_SM(НомерПакета, ИдентификаторСМС)
	Сообщить("Начато: СобратьПакет_Query_SM");
	
	ОтправительСМС = Ящик.ОтправительПоУмолчанию;
	//ОтправительСМС = "";
	
	ДлинаИдентификатора 	= СтрДлина(ИдентификаторСМС);
	Сообщить("-"+ИдентификаторСМС+"-");
	ДлинаИмениОтправителя 	= СтрДлина(СокрЛП(ОтправительСМС));
	ДлинаПакета 			= 20 + ДлинаИдентификатора + ДлинаИмениОтправителя;	
	
	МатрицаДанных 			= Новый COMSafeArray("VT_UI1",ДлинаПакета);
	
	//Заголовок
	МатрицаДанных.SetValue(0,	0);
	МатрицаДанных.SetValue(1,	0);
	МатрицаДанных.SetValue(2,	0);
	МатрицаДанных.SetValue(3,	ДлинаПакета);  //общая длина пакета command_length
	
	МатрицаДанных.SetValue(4,	0);
	МатрицаДанных.SetValue(5,	0);
	МатрицаДанных.SetValue(6,	0);
	МатрицаДанных.SetValue(7,	3);  //command_id 3=query_sm
	
	МатрицаДанных.SetValue(8,	0);
	МатрицаДанных.SetValue(9,	0);
	МатрицаДанных.SetValue(10,	0);
	МатрицаДанных.SetValue(11,	0);  //command_status
	
	МатрицаДанных.SetValue(12,	0);
	МатрицаДанных.SetValue(13,	0);
	МатрицаДанных.SetValue(14,	0);
	МатрицаДанных.SetValue(15,	НомерПакета); //номер пакета
	//мНомерПакета = мНомерПакета + 1;
	
	//message_id	
	Индекс = 16;
	Для Сч = 1 По ДлинаИдентификатора Цикл
		МатрицаДанных.SetValue(Индекс,	КодСимвола(ИдентификаторСМС, Сч));
		Индекс = Индекс + 1;
	КонецЦикла;
	МатрицаДанных.SetValue(Индекс,	0); Индекс = Индекс + 1; 
	//message_id
	
	МатрицаДанных.SetValue(Индекс,	0); Индекс = Индекс + 1;  //source_addr_ton (5 - буквенно-алфавитный)
	МатрицаДанных.SetValue(Индекс,	0); Индекс = Индекс + 1; //source_addr_npi 
	
	//source_addr
	Для НомерСимвола = 1 По ДлинаИмениОтправителя Цикл
		МатрицаДанных.SetValue(Индекс, КодСимвола(ОтправительСМС, НомерСимвола));
		Индекс = Индекс+1;
	КонецЦикла;
	МатрицаДанных.SetValue(Индекс,	0); Индекс = Индекс+1;
	//source_addr
	
	Сообщить( "Окончено: СобратьПакет_Query_SM");
	Возврат МатрицаДанных;
КонецФункции // СобратьПакет_Query_SM()

Процедура ОбработатьПакет_Query_sm_resp(ВходящийПакет)
	//Сообщить("Начато: ОбработатьПакет_Query_sm_resp");
	
	РазмерПакета = ВходящийПакет.GetValue(3);
	КодСтатуса = ВходящийПакет.GetValue(РазмерПакета-2);	
	Индекс = 16;
	
	message_id = "";
	Пока Индекс < РазмерПакета Цикл
		ТекЗначение = ВходящийПакет.GetValue(Индекс);
		Если ТекЗначение = 0 Тогда
			Индекс = Индекс + 1;
			Прервать;
		КонецЕсли;
		message_id = message_id + Символ(ВходящийПакет.GetValue(Индекс));
		Индекс = Индекс + 1;
	КонецЦикла;
	final_date = "";
	Пока Индекс < РазмерПакета Цикл
		ТекЗначение = ВходящийПакет.GetValue(Индекс);
		Если ТекЗначение = 0 Тогда
			Индекс = Индекс + 1;
			Прервать;
		КонецЕсли;
		final_date = final_date + Символ(ВходящийПакет.GetValue(Индекс));
		Индекс = Индекс + 1;
	КонецЦикла;
	
	message_state = ВходящийПакет.GetValue(Индекс); Индекс = Индекс + 1;
	error_code = ВходящийПакет.GetValue(Индекс);
КонецПроцедуры
Показать
3. flesh611 25.12.15 11:19 Сейчас в теме
Очень нужная вещь. А где можно узнать какие коды ошибок каким ошибкам соответствуют при обработке пакета submit_sm_resp? Возникают 2 ошибки с кодом 10 и 100, не пойму в чем дело
4. deminded 7 25.12.15 14:47 Сейчас в теме
(3) flesh611, все коды ошибок есть в спецификации (Спецификация Протокола SMPP v.3.4 )
Например, https://alphasms.ua/storage/files/SMPP-v3.4.rus.pdf
5. Tanis 07.01.17 16:58 Сейчас в теме
Доброго времени суток!

В публикации не указано, или не увидел. Чей логин и пароль используются? эти смс уходят через какие шлюзы или какие компании по доставке смсок?

Спасибо!
6. deminded 7 09.01.17 09:05 Сейчас в теме
(5) Добрый день. Мы использовали обработку для общения со шлюза tele2. Никакие промежуточные компании доставки смс-ок не используются, это их собственный, "родной" smpp-интерфейс http://bsms.tele2.ru/
Логин, пароль и адрес были выданы нам провайдером.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Консультант-аналитик 1С
Санкт-Петербург
Полный день

Консультант-аналитик 1С
Москва
зарплата от 120 000 руб. до 120 000 руб.
Полный день

Удаленный ИТ-журналист
Санкт-Петербург
По совместительству

Программист 1С
Санкт-Петербург
зарплата от 100 000 руб.
Полный день

Программист 1С
Санкт-Петербург
зарплата от 100 000 руб.
Полный день