Morning Girl

Web API, Windows, C#, .NET, Dynamics 365/CRM etc..

Azure Functions でKintoneに登録された情報を元に、Twitter自動投稿するBotを作ってみた

冬休みを利用して、Azure Functionsを利用したTwitter 自動投稿Bot を作っていました。

f:id:sugimomoto:20180101185230p:plain

本当はAzure FunctionsのTimer Triggerでもよかったんですが

後々外部から叩くこともあるかなぁっていうのと、Azure FunctionsだけにTimerの依存を増やすのもいやだなぁというので、Azure Schedulerで実行する方式にしました。

どんな感じに動くの?

Kintoneには以下のようにツイートするデータを管理するアプリを作っています。

あと、二重投稿防止と、ツイートが偏らないようにするための最終投稿日のフィールドを持たせています。

f:id:sugimomoto:20180101185240p:plain

これを元に、私のタイムラインへ以下のように投稿されます。

f:id:sugimomoto:20180101185246p:plain

環境および使ったもの

Azure Functions C# .NET(Coreでは無い)

Azure Scheduler(上のAzure Functions をHTTP Trigerで構成して、Schedulerからキックしています)

KintoneとTwitterのリクエストには、CData ADO.NET Driverを利用しました。

www.cdata.com

www.cdata.com

Azure Functionsのプロジェクトに以下のDLLを参照しておいてください。

C:\Program Files\CData\CData ADO.NET Provider for Twitter 2017J\lib\System.Data.CData.Twitter.dll

C:\Program Files\CData\CData ADO.NET Provider for kintone 2017J\lib\System.Data.CData.Kintone.dll

f:id:sugimomoto:20180101185327p:plain

一つ注意したいのは、Azure Functionsにアップするに当たって、DLLのプロパティで[ローカルにコピー]をTrueにしておきことですね。

f:id:sugimomoto:20180101185333p:plain

これだけで、以下のようにTwitterへの投稿も手軽に実施できます。

ソースコード

Githubソースコードをアップしているので、参考までにどうぞ。

github.com

将来的にやりたいこと

今回はただ自動投稿するBotだったので、最終的にはいいね!の数を計測して、自動的に評判のいい投稿を自動的に実施してくれるようなものにしたいなぁという野望を頂いています。

Azure Congnitive Service の Recommend APIとか使えないかなぁあと。