Edited at

Cisco Spark REST-API 入門

More than 1 year has passed since last update.


Cisco Spark に対して REST-API でアクセスしたい

学習用コンテンツが Cisco DevNet に用意されている(DevNet > Collaboration > Spark for Developers に 3つの Learning Lab がある)。


  • Learning Lab #1: Rooms and Messages

  • Learning Lab #2: App Registration and Authentication

  • Learning Lab #3: Webhooks

懇切丁寧な作りになっているので手順に沿って進めれば「POSTMAN を使って REST-API 経由で Cisco Spark へアクセスする方法」が一通り学べる。

ここではその次のステップとして、POSTMAN を Python へ変更する方法をまとめてみる。


Access Token の取得

Cisco Spark へ REST-API でアクセスするには Access Token が必要。Access Token は Cisco Spark の登録を行うと個人に付与される認証用文字列のこと。以下の方法で取得する:

https://developer.ciscospark.com/

へアクセスしてログイン。

※Cisco Spark の登録が済んでいない場合は登録を行う必要あり

ログインに成功すると右上にアバター(人の顔をしたアイコン)が表示される。

アバターをクリックすると Access Token が表示される。Access Token は他人には決して知られていけない情報なので取り扱いには細心の注意が必要。


実験1:Cisco Spark から Room List を取得する

参考:Cisco Spark の API Reference

http GET を以下の条件で実行すればよい:

Python で HTTP GET を実行するのは requests を使う。コードは例えば以下:

import requests

access_token = 'ここに Access Token を入力'

url = 'https://api.ciscospark.com/v1/rooms'
headers = {
'Authorization' : 'Bearer ' + access_token,
'Content-Type' : 'application/json'
}

r = requests.get(url, headers = headers)

print(r.json())

Room ID だけを取り出したいのであれば、最後の行の print(r.json()) を以下の形に変える:

for line in r.json()['items']:

print line['id']


実験2:Cisco Spark から Room の Message を取得する

Message を取得するには、実験1で取得した Room ID を使って http GET を以下の条件で実行すればよい:

以下はユーザのメールIDとメッセージを表示するサンプルスクリプト:

# -*- coding: utf-8 -*-

import requests

urlr = 'https://api.ciscospark.com/v1/rooms'
urlm = 'https://api.ciscospark.com/v1/messages'
headers = {
'Authorization' : 'Bearer ' + access_token,
'Content-Type' : 'application/json'
}

r = requests.get(urlr, headers = headers)

for line in r.json()['items']:
payload = {'roomId' : line['id']}
print '################### Room: ', line['title']
r2 = requests.get(urlm, headers = headers, params = payload)
try:
for mline in r2.json()['items']:
try:
print mline['personEmail'], '>>>', mline['text']
except KeyError:
pass
except KeyError:
pass

※2017/8/1 少し内容を修正しました。