Class: ActiveSmsgate::Gateway::Amegainform
- Defined in:
- lib/active_smsgate/gateways/amegainform.rb
Overview
«Амега Информ» – amegainform.ru/
это сервис массовой рассылки, приема SMS и голосовых сообщений.
# Возвращаемые данные
# <output>
# <result sms_group_id="996">
# <sms id="99991" smstype="SENDSMS" phone="+79999999991" sms_res_count="1"><![CDATA[Привет]]></sms>
# <sms id="99992" smstype="SENDVOICE" phone="+79999999992" sms_res_count="38"><![CDATA[%PAUSE=1000%%SYNTH=Vika%Привет друг%SAMPLE=#1525%%PAUSE=1000%%SYNTH=Vika%С днём рождения!]]></sms>
# </result>
# <output>
# Возвращаемые данные
# -------------------------------------------------------------------
# SMS_ID - ID сообщения
# SMS_GROUP_ID - ID рассылки сообщений
# SMSTYPE - тип сообщения
# CREATED - дата и время создания сообщения
# AUL_USERNAME - Имя пользователя создавшего сообщение
# AUL_CLIENT_ADR - IP адрес пользователя создавшего сообщение
# SMS_SENDER - Имя отправителя сообщения
# SMS_TARGET - Телефон адресата
# SMS_RES_COUNT - Кол-во единиц ресурсов на данное сообщение
# SMS_TEXT - Текст сообщения
# SMSSTC_CODE - Код статуса доставки сообщения
# -- queued - сообщение в очереди отправки
# -- wait - передано оператору на отправку
# -- accepted - сообщение принято оператором, но статус доставки неизвестен
# -- delivered -сообщение доставлено
# -- not_delivered - сообщение не доставлено
# -- failed - ошибка при работе по сообщению
# SMS_STATUS - Текстовое описание статуса доставки сообщения
# SMS_CLOSED - [0,1] 0 - сообщения находится в процессинге.
# 1 = работа по отправке сообщения завершена
# SMS_SENT - [0,1] 0 - сообщение не отослано. 1 = сообщение отослано успешно
# SMS_CALL_DURATION - Время,
# в течение которого было установлено соединение для отправки сообщения.
# SMS_DTMF_DIGITS - Что пользователь нажимал в сеансе разговора (для SENDVOICE (в разработке))
# SMS_CLOSE_TIME - Время завершения работы по сообщению.
Defined Under Namespace
Modules: ResultSms
Constant Summary collapse
- CLASS_ID =
'amegainform'
- ALIAS =
'www.amegainform.ru'
- SHORT_DESC =
'Шлюз sms рассылок www.amegainform.ru'
- DESC =
"Описание шлюза"
Instance Attribute Summary
Attributes inherited from Gateway
#errors, #login, #password, #use_ssl
Instance Method Summary collapse
-
#balance ⇒ Object
Получение текущего баланса BALANCE [текущее состояние счёта] OVERDRAFT [максимальных уход в минус] PARENT_DEBT [задолженность].
-
#deliver_sms(options = { :sender => nil}) ⇒ Object
Возвращаемые параметры sms_id - ид в сервисе шлюза sms_count - сколько смс потрачено на отправку сообщения phone - номер куда было отправлено сообщение Если @errors не пустое то возвращает nil.
-
#initialize(options = {}) ⇒ Amegainform
constructor
Адреса резервных серверов: service-r1.amegainform.ru и service-r2.amegainform.ru Создание нового шлюза AmegaInformGateway *
:login
– REQUIRED *:password
– REQUIRED. -
#reply_sms(sms_id, sms_type = :sms) ⇒ Object
Возвращаем hash где обязательно есть sms_id - ид в сервисе шлюза sms_count - кол-во смс потраченное на отправку сообщения phone - телефон.
Methods inherited from Gateway
#uri, #use_of_backup_server?, #use_ssl?, #valid?
Constructor Details
#initialize(options = {}) ⇒ Amegainform
Адреса резервных серверов: service-r1.amegainform.ru и service-r2.amegainform.ru Создание нового шлюза AmegaInformGateway
-
:login
– REQUIRED -
:password
– REQUIRED
61 62 63 64 |
# File 'lib/active_smsgate/gateways/amegainform.rb', line 61 def initialize( = {}) @options = super end |
Instance Method Details
#balance ⇒ Object
Получение текущего баланса BALANCE [текущее состояние счёта] OVERDRAFT [максимальных уход в минус] PARENT_DEBT [задолженность]
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/active_smsgate/gateways/amegainform.rb', line 70 def balance response = self.class.post("#{uri}/sendsms", :query => { :action => "balance"}.merge()) if response.code == 200 xml = Zlib::GzipReader.new( StringIO.new( response ) ).read doc = Nokogiri::XML(xml) { :balance => (doc.at("//balance//AGT_BALANCE").inner_html rescue 0), :debt => (doc.at("//balance//PARENT_DEBT").inner_html rescue 0), :overdraft => (doc.at("//balance//OVERDRAFT").inner_html rescue 0) } else raise end rescue nil end |
#deliver_sms(options = { :sender => nil}) ⇒ Object
Возвращаемые параметры sms_id - ид в сервисе шлюза sms_count - сколько смс потрачено на отправку сообщения phone - номер куда было отправлено сообщение Если @errors не пустое то возвращает nil
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 |
# File 'lib/active_smsgate/gateways/amegainform.rb', line 102 def deliver_sms( = { :sender => nil}) @options = { :action => "post_sms", :message => [:message], :target => [:phones], :sender => [:sender] } response = self.class.post("#{uri}/sendsms", :query => @options.merge()) xml = Zlib::GzipReader.new( StringIO.new( response ) ).read if response.code == 200 parse(xml)[:sms] else raise end rescue STDERR.puts " #{$!.inspect} " STDERR.puts " #{xml} " if xml nil end |
#reply_sms(sms_id, sms_type = :sms) ⇒ Object
Возвращаем hash где обязательно есть sms_id - ид в сервисе шлюза sms_count - кол-во смс потраченное на отправку сообщения phone - телефон
132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 |
# File 'lib/active_smsgate/gateways/amegainform.rb', line 132 def reply_sms(sms_id, sms_type = :sms) raise unless [:sms, :sms_group].include?(sms_type) @options = { :action => "status", :sendtype => "SENDSMS", "#{sms_type}_id".to_sym => sms_id } response = self.class.post("#{uri}/sendsms", :query => @options.merge()) xml = Zlib::GzipReader.new( StringIO.new( response ) ).read if response.code == 200 parse(xml)[:messages] else raise end rescue STDERR.puts " #{$!.inspect} " STDERR.puts " #{xml} " if xml false end |