GoogleAppsScript
AI
A3RT
Sunshine-rabbits

[初心者向け] GASと対話AI(A3RT)と台北サンシャインラビッツ


Twitter凍結のため終了

メンションしすぎたか?

Screenshot_20190614-000919_Twitter.jpg

<作業1>改造検討

一晩走らせたがあんまりツイートしていない。

これでは意味がないのでカイゼンする。

現在のプログラム、

ツイートを拾って

投げて消しています

毎回消すのを やめるか

ツイートを

どんどん貯めて

最終行をAPIへ投げれば

常に 出力できる

スプレッドシートのサイズは

でかくなるけど

テキストデータだけだし

シートクリアは

関数化して別周期で回してもいいな。


令和元年6月12日(水) 

<作業9>動作チェック

https://twitter.com/Y3jCL5sTikKbSXu

出力と入力繋いだら、案の定、動作異常。

入力は外部ツイートをひろうよう、変更。

<作業8>微修正

・IFTTT修正(入力側)

スプレッドシートへ保存する項目をTextだけにする。

USER名のみを変えて、同じアプレットを5つ作る。

スプレッドシート名も同一ファイル名。

これにより入力を増やせる。

twitter23.jpg

・ソース修正

 メンションもA3RTへ投げる。

・タイマー

 IFTTTが重いが、1分おき実行。

<作業7>GASの定期実行

参考:https://qiita.com/rf_p/items/267a8d9daa8c9f1ef027

これを参考に1分ループにする。

twitter22.jpg

<作業6>他力本願1のコードを実行。

twitter21.jpg

なんでやねん!!!

03.jpg

昨日まで動いていたコードでも同じエラー

・安全ではないページへ移動

無理やりA3RTを許可。一応動いてる。

・ハマったところ

sheet.getLastRow();でエラー

sheetNameの設定ミス。スプレッドシートのファイル名ではなく、

”シート1”とかを設定する。

function isSheetDataAvailable(){

var spreadsheet = SpreadsheetApp.openById(sheetId);
var sheet = spreadsheet.getSheetByName(sheetName);
var maxRow = sheet.getLastRow();

return maxRow > 0;
}

<作業5>IFTTT(出力側)の設定

・webhookの設定(トリガー)

twitter17.jpg

・actionの設定

twitter18.jpg

・webhooksのKEY

https://ifttt.com/maker_webhooks

これを開いて、Documentationをクリック。

イベント名を入れたURLをGASで叩きます。

twitter19.jpg

・テスト結果

IFTTTのactionを修正し、value1だけにします。

twitter20.jpg

<作業4>spreadsheetsのIDを探す

参考:https://spreadsheet.blue/google-apps-script/sheet/getid/258/

シートを開いた時のURLの中に埋め込まれています。

ファイルのURLが下記の場合、

https://docs.google.com/spreadsheets/d/abc1234567/edit#gid=0

のスプレッドシートIDは「abc1234567」です。

(dとeditの間。実際のIDは44文字程度。)

<作業3>トリガーが少なすぎる問題対策

高橋名人ですら1日数ツイート。

出力を入力へ戻せば、永久ループになるか?

同じ内容の連続ツイートは、

エラーになるからAIが話題を変えてこないと成立しない。

Screenshot_20190612-111206_Chrome.jpg

<作業2>アイコン画像をなんとかする。

相手がメンション通知を見たときに、

台北サンシャインラビッツのファンだという

印象を与えなければならない。

<作業1>IFTTTのwebhookの使い方を学ぶ

参考https://ifttt-japan.club/apply-webhooks

他力本願1コードの

var iftttUrl = "https://maker.ifttt.com/trigger/xxx/with/key/xxx";

最初のxxxにはイベントネーム

末尾のxxxにはキーコードが入る。

イベントネームは、

最終出力でツイートさせる際に必要。

rabbitsとでもしておこう。

受け渡す情報はvalue1のみ。

value1に対話AIの応答メッセージを格納し、

IFTTTへ投げている。

function triggerIfttt(message){

var payload =
{
"value1" : message
};

<仕様検討1>

・選手のツイートの特徴

 ツイート回数が少ない。

 月一回程度。

 つまり、トリガーが少ない。

 面白くない。終了?

 ↓

 そもそも

 A3RTにまともな受け答えは期待できない。

 入力はなんでもいい?

 ↓

 入力は、TOYOCOPのツイート

 出力は、珍紡織のツイートにメンション付加

 アカウント名@xxxxxをテキトーに並べて

 変数messageに連結。

 アカウント名とアカウント名の間には

 スペースを入れること。

 文頭にはFF外失を付加。

 ↓

 即ブロックされて終了

 バスケットだけに。

 


令和元年6月11日(火) 

<作業4>

他力本願1のコードをおおざっぱに、理解する。

珍紡織アカウントから、

@Om7nHd40pdBypQSへツイートできるんかな?

・データシート関数の理解

参考https://www.google.com/amp/s/www.hop-step-engineering.com/googleappsscript/getsheetvalues/%3famp=1

・Twitterユーザ名のあとにコメントを書いて

 ツイートすると、相手の通知欄へ表示される。

 バスケット選手側がツイートするたびに

 珍紡織AIからのリプライが

 通知欄へ現れるので、非常に気持ち悪い。

 @ayyak※※※ @bsk1※※※※ @Chi※※※※※

ユーザ名のあとにスペース入れれば

 台湾のバスケットチーム全員へ同時に

 リプライできそうだが文字数制限あるから

 5人くらいまでかな。

 

 Screenshot_20190611-233720_Twitter.jpg

<作業3>IFTTTでツイートを自動保存させる。

参考1http://agn.jp/blog/?p=2812

特定のユーザのつぶやきを監視します。

実験中なので、珍紡織くんのユーザnameを入力してます。

twitter11.jpg

次はaction

Google sheetsを選択

twitter12.jpg

add row to spreadsheetを選択

twitter13.jpg

ひとまず、初期設定のままCreate actionを押す

twitter14.jpg

My Appletsができました。

twitter15.jpg

Twitterでツイートしてみます。

お、スプレッドシートに保存されました。

twitter16.jpg

<作業2>他力本願2のコードを実行してみる。

APIKEYを自分のものに書き換えただけ。

バグマークの右のmyFunctionの表示を確認してから、実行ボタン。

次にログを表示させます。[表示]→[ログ]

twitter7.jpg

twitter9.jpg

なんのこっちゃ???

twitter10.jpg

<作業1>GASについて、いちから学ぶ。

https://qiita.com/tanabee/items/2c51681396fe12b6a0e4

Google Apps Script (GAS)

https://developers.google.com/apps-script/

スクリプトエディタ

https://script.google.com/home

<仕様検討2>

仕様を練っていたら、IFTTTとGAS使った方が良さそうなので他人のをパクることに。

他力本願1→https://relativelayout.hatenablog.com/entry/2017/04/28/225235

他力本願2→https://relativelayout.hatenablog.com/entry/2017/04/26/224004

<仕様検討1>

女子選手のツイートを拾う→会話AIへ投げる→会話AIからの応答をTwitterへ返す。

(例1)ツイートを拾う

名古屋駅のとこのタピオカのお店

(名前忘れた。シカのマーク🦌)
開店前に4時間待ち。。。
みんなすごいなぁ😳
飲んでみたいけどさすがに4時間はむりだ🤦🏻‍♀️

なんでやねん❗まだ、なんもつぶやいてないがや❗

Screenshot_20190611-055007_Twitter.jpg


令和元年6月10日(月) 

A3RT

<手順10>なぜか 雑談対話AIが選択できない、表示すらされないので、もう寝る。

→雑談AIのサービス終了してた。

twitter6.jpg

<手順9>ドコモ会話AIの利用登録

Docomoがこんなの作ってるなんてね。

サンシャインラビッツの選手を口説き落とすために、

会話AI(人工知能)を利用します。

twitter5.jpg

<手順8>ググる

API利用まで二週間くらいかかるらしい。

https://qiita.com/kngsym2018/items/2524d21455aac111cdee

<手順7>Create an APP をクリックして トークン取得

はい、またダメ。クリックできない。→承認前だから。

twitter4.jpg

<手順6>Twitterアカウントに携帯電番を登録して再度アクセストークン取得。

まず、開発者アカウントとしての承認が下りる。んじゃなくて、

申請しただけ。

twitter3.jpg

<手順5>APIをどのように利用するか、計画を書く。

またエラー。終了。ちっとも前に進まないじゃないか!!!

twitter3.jpg

<手順4>もう一度アクセストークン取得

https://apps.twitter.com/

<手順3>APIを利用するためのアクセストークン取得

なんでやねん! なぜか ロックされている。

twitter2.jpg

<手順2>モジュールのインストール

npm install twitter

twitter1.jpg

<手順1>Twitterアカウント取得

twitter.jpg

<手順0>他力本願

https://tasoweb.hatenablog.com/entry/2018/06/01/002438

ソースコードは、これから書きます。

目標1:Twitter APIで他人へコメントする。

目標2:Twitter APIで 選手をくどき落とす。

目標3:Twitter APIで 結婚する。 

サンシャインラビッツのマスコット

珍紡織くん(台湾出身)

images - 2019-06-10T112238.236.jpeg