Morning Girl

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

Google Homeを使ってIFTTT+Azure Functions 経由でSharePointにタスク登録をしてみる

今日は、昨日投稿したJPSPS SharePoint/Office365名古屋分科勉強会で発表したセッションの実装方法を書いていきます!

kageura.hatenadiary.jp

内容は、最近の流行り? にのって購入したGoogle HomeとSharePointの連携方法!

www.instagram.com

Google Homeは色々と連携アプローチがあるのですが、その中でもある程度手軽に試せる、チャットボットやIFTTT連携に取り組んでみました。

今回はそのIFTTT連携編です。次回チャットボット編を投稿予定です。

こんなことをするよ!

IFTTTにGoogle AssistantとWebhooksのコネクターがあるので、それを利用して、SharePointにタスクを登録するというものです。」

Google Homeに向かって「OK Google,SharePointに[ほにゃららー]のタスクを作成」って言うと、SharePointのタスクリストに自動的に登録してくれる簡単なワークフローです。

f:id:sugimomoto:20171118181143p:plain

さて、ここで誠に残念なことに、IFTTTにはSharePointコネクタがありません。

Office365でもCalendarやContactsはあるのに。

f:id:sugimomoto:20171118181149p:plain

しょうがないので、間にAzure Functionsを挟んで、SharePointAPIを叩きます。

叩く際には、CData SharePoint Driverを使うと便利です。

www.cdata.com

HTTP TrigerのAzure Functionsを作成

Azure FunctionsはC#(.net 4.6.1)のHTTPトリガーで作成しました。

ヘッダーのHTTPパラメータ[name]を取得して、SharePointのタスクリストにインサートしています。

ソースコードは以下から。

github.com

結構単純に作れるのが、やっぱりAzure Functionsのいいところですね。

Cdata Driverには接続文字列を渡して、Insertクエリをするだけで、SharePointタスクにレコードを追加することができます。

接続文字列にライセンスキーを渡して上げる必要があるところだけ注意してください。

Azure Functionsの作り方はまた今度、書き留めたいと思います。

個人的には以下の資料がいい感じかなと思っています。

www.slideshare.net

IFTTTの構成

IFTTTってWebで作成できるんですね。

以下でログインして、作成に進めます。

ifttt.com

[My Applets]→[New Applet]をクリックして

f:id:sugimomoto:20171118181202p:plain

最初に実行条件を構成します。

[this]から

f:id:sugimomoto:20171118181213p:plain

[Google Assistant]を選びます。

f:id:sugimomoto:20171118181228p:plain

Google AssistantのTriggerは色々種類があるのですが、今回は動的にメッセージを渡すことができる

[Say a phrase with a text ingredient]を選択します。これを利用することで、Azure Functionsのパラメータに動的にメッセージを渡せます。

f:id:sugimomoto:20171118181236p:plain

さて、このtriggerの構成をするんですが、ミソは[Waht do you want to say?]のキーワード埋め込みです。

ここで「SharePointに $ のタスクを作成して」と「 $ 」(両端に半角スペースを入れること)を加えることで、あとでこのキーワードを変数として扱えるようになります。

[What's another way to say it?]には、もう少し発音を捉えやすくするために、カタカナやひらがなに崩した文面を入力しておきます。

f:id:sugimomoto:20171118181249p:plain

次にアクションの登録。

[that]をクリックして

f:id:sugimomoto:20171118181258p:plain

[Webhooks]を選択

f:id:sugimomoto:20171118181305p:plain

f:id:sugimomoto:20171118181312p:plain

ここで、事前に作成した、Azure FunctionsのURLを入力します。

ポイントは先程のテキスト埋め込みで、[<<< {{TextField}}>>>]な感じで、URLパラメータを指定します。{{TextField}}だけだと、エンコーディングされないので注意。

Sample:https://****.azurewebsites.net/api/FunctiojnName?code=Key&name=<<< {{TextField}}>>>

f:id:sugimomoto:20171118181323p:plain

Azure FunctionsのURLはCodeも埋め込まれた形で以下から取得できます。

f:id:sugimomoto:20171118181333p:plain

以上で、作成完了です。

IFTTTはActivityで実行ログが確認できます。

f:id:sugimomoto:20171118181343p:plain

Azure Functionsの管理画面でモニターをクリックするとログが確認できるので、切り分けにうまく使いましょう。

f:id:sugimomoto:20171118181359p:plain

以上ですー。