SMS
¶ ↑
Kurulum¶ ↑
gem install omu-sms
Kullanım¶ ↑
Yapılandırma
OMU::SMS.configure provider: :mutlu_cell, user: 'cezmi', pass: 'secret', from: 'OMUBAUM', title: 'Ondokuz Mayıs Üniversitesi' # isteğe bağlı
Gönderim
OMU::SMS.(to: %w[1234567 7654321], body: 'foo bar baz')
Yapılandırmadan ön tanımlı gelen from
alanını değiştir
OMU::SMS.(to: %w[1234567 7654321], body: 'foo bar baz', from 'OMUUZEM')
Yapılandırmadan ön tanımlı gelen date
alanını değiştir
OMU::SMS.(to: %w[1234567 7654321], body: 'foo bar baz', date: '02/08/2020 01:53')
Yapılandırmasız şekilde her şeyi açık ver
OMU::SMS.(provider: :verimor, user: 'cezmi', pass: 'secret', from: 'OMUBAUM', to: '1234567', # tek numara da olabilir date: '02/08/2020 01:53', body: 'foo bar baz')
Geliştirme¶ ↑
Örneğin Acme
adında yeni bir SMS sağlayıcı için provider
dizininde acme.rb
isimli bir sürücü oluştur.
module OMU module SMS module Provider class Acme < Base posting endpoint: 'https://example.com/send', header: { 'content-type' => 'text/xml;charset=utf-8', 'accept' => 'xml' }.freeze rendering content: <<~TEMPLATE <?xml version="1.0" encoding="UTF-8"?> ... TEMPLATE inspecting do |result| result.detail.credits = result.response.body&.to_s end end end end end
Bu örnekte görülen TEMPLATE
API isteklerinde render edilerek POST edilen bir ERB şablonudur. Şablonda (öncelik sırasıyla) message
nesnesi ve Provider
yapılandırmasında tanımlı tüm nitelikleri kullanabilirsiniz. Örnekte inspecting
ile (istisna üretmeden sonlanan) başarılı bir POST işlemi sonrasında çalıştırılacak bir callback ayarlanır. Bu callback her sağlayıcı tarafından gerçeklenmelidir.
Asgari olarak tüm sağlayıcılarda user
, pass
ve from
(öntanımlı değer olarak) yapılandırılmış olmalıdır. Sağlayıcı bunun dışında bir nitelik, örneğin customer_no
gerektiriyorsa aşağıdaki örnekten yararlanabilirsiniz.
module OMU module SMS module Provider class Acme < Base posting endpoint: 'https://example.com/send', header: { 'content-type' => 'text/xml;charset=utf-8', 'accept' => 'xml' }.freeze rendering required: %i[customer_no], content: <<~TEMPLATE <?xml version="1.0" encoding="UTF-8"?> <sms customer=<%= customer_no %>> ... </sms> TEMPLATE inspecting do |result| result.detail.credits = result.response.body&.to_s end end end end end
Sağlayıcıya veri gönderilirken farklı bir HTTP seçeneğine ihtiyaç duyarsanız options
seçeneğini ayarlayın.
module OMU module SMS module Provider class Acme < Base posting endpoint: 'https://example.com/send', header: { 'content-type' => 'text/xml;charset=utf-8', 'accept' => 'xml' }.freeze, options: { ssl_version: :TLSv1_2 }.freeze rendering content: <<~TEMPLATE <?xml version="1.0" encoding="UTF-8"?> ... TEMPLATE inspecting do |result| result.detail.credits = result.response.body&.to_s end end end end end
Sürümleme¶ ↑
Tüm değişiklikler tamamlandıktan sonra:
-
Lint ve Test
sh bundle exec rake lint bundle exec rake test
Varsa hataları düzelt
-
Komitle
sh git commit -a git push origin master
CI'da hata varsa düzeltinceye kadar devam et
-
Sürüm yükselt
sh $EDITOR lib/omu/sms/version.rb git commit -a -m "Yeni sürüm: «sürüm»" git push origin master
-
Etiketle
sh git tag -a «sürüm» -m «sürüm» git push --tags origin
-
Paketle
sh bundle exec rake package