Office365+Palmi
こんにちは。 DMM.comラボでロボットを使って遊んでいるコーイチです。
弊社ではロボットを売るための試みとして、様々なWebサービスとの連携デモを行っています。
デモはデモであって、ありていにいってハリボテなので、色々と恥ずかしく、要するにソースコードは公開できないのですが、こんなこともやっていますよ。 という紹介をさせていただきます。
今回はMicrosoftさんのサービスと連携してみました。 こんな感じです。
何かというと、Office 365のOutlookにメールを送ると、ギリギリリアルタイムと言えなくもないラグでPalmiがメール内容を喋るものです。
ビジネス寄りなデモなので、Outlook.comではなく、Office 365のOutlookです。
こんな感じに動きます。
だからどうした、という感じではありますが、ここから何かが生まれるかもしれません。
さて、開発の苦労話をしてこの記事を終わりたいと思います。
デモなので Graph だろ
アプリケーションからOffice 365にアクセスするには、大きく以下の2手法があります。
- Office 365 API を使う
- Microsoft Graph を使う
Office 365 APIのドキュメントには以下のようなことが書かれていました。
Office 365 API の機能は Microsoft Graph や、Outlook、OneDrive、OneNote、Planner Office Graph など、別の Microsoft サービスから、単一のエンドポイントを経由して単一のアクセス トークンでアクセス可能な API を含む統合 API 経由でも使用できます。可能な場合は、アプリで Microsoft Graph を使用することをお勧めします。
デモなので、推奨されているGraphを使うのが正道でしょう。
こんな感じで使いました。
- 認証・認可
- Application-Only Token で認証
- Administrator Consent で認可
- APIバージョン
- 2016/10/20現在
/subscriptions
は Application-Only Token 未対応 - beta 版APIを用いた
- 2016/10/20現在
- Webhooks API
{tennantId}/users/{userPrincipal}/messages
をSubscribe
デモ対象や、便宜上のトークン取り回しの良さからWebアプリケーション上で Application-Only Token を取得しました。 が、そうしたら目的のAPIが未対応だったんですね。
400 Bad Request "error": { "code": "", "message": "Application-Only subscription requests are not currently supported for this api version."
こんなレスポンスが返ってきたときには、描いていた青写真が実現できそうになくて顔が青くなりました。
そんな時、天の声(日本Microsoftのエバンジェリストの方の案内)が聞こえてきました。
「beta版APIなら動くかもしれません」
ビンゴ。
デモなのでベータ版でも全然OK、と相成りました。
/subscriptions
リソースは、指定したリソースの変化を購読できるリソースです。
今回はメール(messagesリソース)の生成(created)を購読することで、新着メールが通知されるようにしました。
中々使い出のあるAPIだと思います。
ロボットをIoTデバイスと見立てて IoT Hub だ
今年、IT業界でいい感じにバズワードとなっているIoT。 Azure IoT HubはIoTデバイスを管理、相互通信するためのPaaSです。
流行りに乗っかるには使うしかない。
というわけでこんな感じで使いました。
- C2D メッセージ
- Cloud To Device
- リアルタイムな通知に用いた
- Webhook をApp Service上のAPI Appで受け付け、エンキュー
- Microsoft Azure IoT device SDK for C
- Palmi からのアクセスに用いた
今回は大して生かしてないですが、IoT Hub は D2Cメッセージやデバイス管理など、ロボットと相性が良いサービスなので、機会があれば他の機能も試して行きたいです。
SDK for C がサポートするOSはUbuntuだと14LTS~で、Palmiのそれとは少々マッチングしないです。 ARM向けにクロスコンパイルする必要もあったり、非常にモンキーなパッチを当ててビルドしたので、とても見せられないものなのでした。
夢追い人
ロボットを使ったアプリケーションはまだまだ夢が多いですが、追いかけなければ夢は実現しません。
これからも(ロボットチームである限りは)追いかけていきたいと思います。