SMS senden leicht gemacht (Orange)
Gibt es was mühsameres, als die unsäglichen Browser-SMS-Versende-Dienste unserer Mobilfunkanbieter? Naja, wahrscheinlich gibt es schlimmeres, aber verbessern kann man es ja trotzdem. Das Ziel ist, möglichst einfach SMS zu versenden, also schreiben wir doch ein Script, welches als Parameter Nummer und Text entgegennimmt und versendet.
Ist eigentlich ganz einfach, Mechanize mimt einen Browser und macht genau das, was auch ein Mensch tun würde, also anmelden, Formularfelder ausfüllen und abschicken:
#!/usr/bin/ruby require 'mechanize' username = 'mirkostocker' password = 'XXXXXXXXXXXX' number = ARGV.shift message = ARGV * " " if message.length > 144 || message.length < 1 $stderr.puts "Nachricht zu lang oder zu kurz.." exit 1 end def find_form_with_field(page, fieldname) page.forms.each do |form| if form.fields.find{|f| f.name == fieldname} yield form end end end WWW::Mechanize.new do |agent| agent.get('https://www.orange.ch/footer/login') do |page| find_form_with_field(page, 'username') do |f| f.username = username f.password = password f.submit end end agent.get('https://www.orange.ch/myorange/sms') do |page| find_form_with_field(page, 'messageInput') do |f| f.destinationNumberInput = number f.messageInput = message f.wui_target_id = 'sendButton' f.wui_event_id = 'onclick' f.submit end end end
find_form_with_field musste ich schreiben, da die Formulare keine Namen besitzen, und fragt mich nicht, weshalb ich wui_target_id und wui_event_id setzen muss, im echten Browser wird das per Javascript gemacht und ist anscheinend wichtig. Hat auch gleich die Projektdauer um 50% verlängert, auf rund 1.5 Stunden.
So, und wer kümmert sich um die Swisscom und Sunrise?
Guido: Wie du siehst habe ich einen netten Weg gefunden, bunten Code zu bloggen, der beste Editor der Welt hat nämlich eine TOhtml Funktion.
6 comments on “SMS senden leicht gemacht (Orange)”
Leave a comment
You must be connected to write a comment.


Und jetzt muesch eifach immer nummere vo Hand itippe?
Abgseh devo das mer bi de Orange öppä glich schnell isch wenn mers vo Hand itippt wells meistens so lahm isch.. nei, mues mer natürli nöd, mer chönt eifach s Script erwitere. Oder ich ha mer es paar Shell-Alias gmacht.
oke
…. mal luege…. ich bin en Swisscom-Abo-Bsitzer, nütz mer also no nix
na das nenn’ ich mal ein geiles script
super praktisch. sehr schön. werde ich gleich verwenden (vielleicht noch etwas mit fxruby zaubern, damit’s ein wenig grafisch aussieht
) danke!
Freut mich, dass es dir gefällt
Auch am Error-Handling könnte man noch was verbessern.. und ich habe noch Hoffnung, dass jemand was ähnliches für die anderen Provider erstellt, dann könnte man auch alle Dienste unter einem GUI zusammenfassen.
Ich hab schon mal was ähnliches entwickelt, einfach ein GUI für aspsms.
SMS Senden leicht gemacht (Swisscom)…
mirko stocker hat die vorlage für’s sms senden via orange programmiert und weil er in seinem beitrag fragte, ob’s jemand für swisscom und sunrise machen will und mich ein kollege nach einer swisscom-lösung fragte, hab ich das skript halt…