Class: ActiveSmsgate::Gateway::Amegainform

Inherits:
Gateway
  • Object
show all
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

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 = {})
  @options = options
  super
end

Instance Method Details

#balanceObject

Получение текущего баланса 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(auth_options))
  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(options = { :sender => nil})
  @options = {
    :action  => "post_sms", :message => options[:message],
    :target  => options[:phones], :sender  => options[:sender] }

  response = self.class.post("#{uri}/sendsms", :query => @options.merge(auth_options))
  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(auth_options))
  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