Pepi kaj rektmesaghi pere de Guglo-Tabeloj (kombine kun skripto de Guglo-Apoj)

Westphoenizier
Westphoenizier
Published in
3 min readJun 24, 2018
Aktualigo (2022-06-08): De kelkaj tagoj mi utiligas rethokon de la SMS-servo sms77, por pepi kaj rektmesaghi per SMS. Pli pri sms77 estas en tiu artikolo.
Aktualigo (2018-10-11): Koncerne rektmesaghadon (RM) Tvitero shanghis ion rilate sian API en Septembro 2018. Tial mi devis adapti mian skripton. Vidu malsupre che "Ekde 2018-10-10 mi uzas modifitan skripton por rektmesaghado ..."

Eblas utiligi Guglo-tabelon por pepi robote au — kaj jeno estas mia aplikado — : per SMS. La ideo por chi lasta estas: Unue mi sendas SMS-on al unu el la SMS-al-retposhto-kluzoj. Due chi tiu ghin plusendas, kiel retposhtleteron, al mia Gugla retposhtkonto. Trie ghin kontrolas Guglo-tabelo kombine kun rilata skripto regule, ekz. chiun minuton lauagorde de l’ ekagilo de l’ skripto. Kvare ghi laue igas pepi difinitan tekstparton de la “retposhtleterighinta” SMS, se chi tiu plenumas difinitajn kriteriojn. Analoge mi procedas por per-SMS-a rektmesaghado Tvitera.

En tiu chi blogero mi prezentas nur tre koncize tiujn elementojn de chi-cela skripto de Guglo-Apoj. Ghi estas ligita al la koncerna Guglo-tabelo kaj plenumas la kvaran pashon. Mi supozas, ke el tiu chi blogero povas profiti (chu nur?) tiaj legantoj, kiuj jam estas sufiche spertaj pri Guglo-Tabeloj kaj Guglo-Apoj. (Mi ne estas programisto kaj devis investi ne malmulte da tempo, por trovi la necesajn “ingrediencojn” kaj kunmeti ilin — espereble — ghuste.)

Por pepado mi adaptis la konsilojn kaj skripton donitajn en tiu retejo. Grave: Por ke la afero funkciu, mi devis enigi sub var service = new Twitter.OAuth(props); jenan linion de kodo: var twit = new Twitter.OAuth(props);. Krom tio mi devis aldoni al mia skripto funkciojn donitajn en tiu retejo.

Por rektmesaghado mi modifis konsilojn kaj skripton donitajn en tiu retejo. Mi reduktis la tiean funkcion function sendTweet(user, tweet, tweet-type) al function sendDM(uzanto, dm), char mi bezonas la skripton nur por rektmesaghado. (Por pepado mi ja uzas la supre skizitan alian skripton.) Krom tio mi devis aldoni al mia skripto funkciojn donitajn en tiu retejo kaj uzis anstatau var twitterService = getTwitterService_(); jenan kodon:

var twitterKeys= {
TWITTER_CONSUMER_KEY: "<vidu malsupre>",
TWITTER_CONSUMER_SECRET: "<vidu malsupre>",
TWITTER_ACCESS_TOKEN: "<vidu malsupre>",
TWITTER_ACCESS_SECRET: "<vidu malsupre>"
};
var props = PropertiesService.getScriptProperties();
props.setProperties(twitterKeys);
var service = new Twitter.OAuth(props);

La <vidu malsupre>-aferoj estas la respektivaj shlosiloj k. s. riceveblaj en tiu Tvitera apo, kiun oni devas esti kreinta laupriskribe de tiu retejo. Efektive mi tiel kreis unu Tviteran apon por la skripto por pepado kaj alian Tviteran apon por la skripto por rektmesaghado.

Avantagho de mia supre priskribitaj procedoj estas, ke ech sen bezono je servoj, kiel ekz. Zapier kaj Integromat, mi povas pepi kaj rektmesaghi okaze de tio, ke mia smartfono estas sen konekto kun la interreto kaj kun konekto kun la SMS-reto.

Ekde 2018–10–10 mi uzas modifitan skripton por rektmesaghado (jen la bazo por la modifo): En function sendDM(user, dm) nun estas jena kodajhparto:

var api = "https://api.twitter.com/1.1/direct_messages/events/new.json"; 
var recipient_id = user;
var text = dm;
var data = {'event': {'type': 'message_create', 'message_create': {'target': {'recipient_id': recipient_id}, 'message_data': {'text': text}}}};
var options = {
'method' : 'post',
'contentType': 'application/json',
// Convert the JavaScript object to a JSON string.
'payload' : JSON.stringify(data),
muteHttpExceptions: true
};
var response = service.fetch(api, options);

Krome mi aldonis sub TWITTER_ACCESS_SECRET: ...; jenon:

oauth_nonce: "AUTO_GENERATED_NONCE",
oauth_signature: "AUTO_GENERATED_SIGNATURE",
oauth_signature_method: "HMAC-SHA1",
oauth_timestamp: "AUTO_GENERATED_TIMESTAMP",
oauth_token: "USERS_ACCESS_TOKEN",
oauth_version: "1.0"

Kaj en function initializeOAuthClient() staras nun ankau jeno:

var oauth_nonce="AUTO_GENERATED_NONCE";
var oauth_signature="AUTO_GENERATED_SIGNATURE";
var oauth_signature_method="HMAC-SHA1";
var oauth_timestamp="AUTO_GENERATED_TIMESTAMP";
var oauth_token="mia_Twitter_Access_Token";
var oauth_version="1.0";

Mi tamen ne scias, chu tiuj chi kromaj kodajhoj pri rajtigo efektive estas necesaj: Mi estis aldoninta ilin, antau ol mi modifis mian skripton aliparte tiel, ke ghi farighis ghuste funkcianta, kaj simple lasis ilin en ghi, char ili chiuokaze evidente almenau ne ghenas.

Gravas, ke mia nuna skripto postulas uzi la Tviteran ID de la adresato (recipient_id) anstatau ties kontonomon. Eble iam mi programos automatan konvertadon je la kontonomo al la Tvitera ID. Dume mi kontentighas pri listo de miaj plej vershajne kandidataj adresatoj permane antaue farita per helpo de tiu retejo kaj konservita en mia smartfono.

Se tio chi ne montrighas bone, klaku chi tie.

--

--

Westphoenizier
Westphoenizier

Stell dir vor,es gibt Sprachbarrieren und jeder lernt Esperanto.Lingvo internacia Radio-auskultado:analoga&DAB+ Haiku.Hajko Sciencfikci- & fantaziajhoj.Indirok'