APIの概要は「無料版GroupSessionの設計書(WEB API 仕様書)」をダウンロードしてください。
例として今日の設備予約内容を取得する。
※取りあえず動くことだけを目的としているので「ここがおかしい」「こうしたほうがよい」などあればお知らせください。
準備
GroupSesseion のインストールや初期設定は割愛。
1. admin 以外の管理者ユーザーを1つ作成する。
2. GroupSesseion のプラグインマネージャで「WebAPI」を「使用」にする。
3. WebAPI の管理者設定 ⇒ Web API基本設定 ⇒ トークン認証を「使用する」
4. WebAPI の管理者設定 ⇒ Web APIトークン管理 ⇒ トークン発行。1で作った管理者ユーザーを選択してトークンを発行する。生成されたトークン文字列は、このあとすぐに使います。
実装
施設名と施設SIDを取得する
<?php
$server='http://XXX.XXX.XXX.XXX:8080/gsession'; // GroupSessionのインストール場所
$token='abcdefghijklmnopqrstuvwxyz='; // トークン
$options = array(
'http' => array(
'method' => 'POST',
'header'=> "Authorization: Bearer ".$token."\r\n"
)
);
$url1 = $server."/api/reserve/list.do";
$context1 = stream_context_create( $options );
$result1 = file_get_contents( $url1, false, $context1 );
$reader1 = new SimpleXMLElement($result1);
//var_dump($reader1);
foreach ($reader1->Result as $shisetsu) {
echo "施設名称:".$shisetsu->RsdName.",";
echo "施設SID:".$shisetsu->RsdSid."<br />\r\n";
}
?>
サーバーの IPアドレスを2行目に記載する。
準備4で取得したトークンを3行目に貼り付け。
ここまでで、施設名と施設SID の一覧が表示されるはずです。
うまく表示されなければ、var_dump のコメントを外してエラー内容を確認してください。
施設SID は、施設名をクリックしたときに表示される施設ID ではなく、内部ID です(このあと使います)。
施設ごとの予定を取得する
例えば、施設SID が1の施設の今日の予定を取得するなら、
<?php
$server='http://XXX.XXX.XXX.XXX:8080/gsession'; // GroupSessionのインストール場所
$token='abcdefghijklmnopqrstuvwxyz='; // トークン
$options = array(
'http' => array(
'method' => 'POST',
'header'=> "Authorization: Bearer ".$token."\r\n"
)
);
$n = new DateTime();
$start= $n->format('Y/m/d 00:00');
$end = $n->format('Y/m/d 23:59');
$url2 = $server."/api/reserve/yoyaku/search.do?rsdSid=1&startTime=".urlencode($start)."&endTime=".urlencode($end);
$context2 = stream_context_create( $options );
$result2 = file_get_contents( $url2, false, $context2 );
$reader2 = new SimpleXMLElement($result2);
//var_dump($reader2);
foreach ($reader2->Result as $yotei) {
echo "予約日時:".$yotei->StartDateTime."~";
echo $yotei->EndDateTime;
echo " 利用目的:".$yotei->Title."<br />\r\n";
}
?>
$url2 の「rsdSid=1」にて施設SIDを指定しています。
今回も、うまく表示されなければ var_dump のコメントを外してエラー内容を確認してください。
サイボウズ API と違って予約日時順でソート済みの結果が返ってくるので楽ちん(*^^)v
特定の施設IDの、今日の予約を一覧表示する
というわけで全文。
<?php
$shisetsuID='9999'; // 施設名をクリックしたときに表示される施設ID
$server='http://XXX.XXX.XXX.XXX:8080/gsession'; // GroupSessionのインストール場所
$token='abcdefghijklmnopqrstuvwxyz='; // トークン
$options = array(
'http' => array(
'method' => 'POST',
'header'=> "Authorization: Bearer ".$token."\r\n"
)
);
// 施設情報を取得する
$url1 = $server."/api/reserve/list.do";
$context1 = stream_context_create( $options );
$result1 = file_get_contents( $url1, false, $context1 );
$reader1 = new SimpleXMLElement($result1);
foreach ($reader1->Result as $shisetsu) {
if ($shisetsu->RsdId==$shisetsuID) {
$shisetsuName = $shisetsu->RsdName;
$shisetsuSID = $shisetsu->RsdSid;
}
}
// 今日の予約を取得する
$n = new DateTime();
$start= $n->format('Y/m/d 00:00');
$end = $n->format('Y/m/d 23:59');
$url2 = $server."/api/reserve/yoyaku/search.do?rsdSid=".$shisetsuSID."&startTime=".urlencode($start)."&endTime=".urlencode($end);
$context2 = stream_context_create( $options );
$result2 = file_get_contents( $url2, false, $context2 );
$reader2 = new SimpleXMLElement($result2);
// 表示する
echo $shisetsuName."の今日の予約内容\r\n";
foreach ($reader2->Result as $yotei) {
echo "予約日時:".$yotei->StartDateTime."~";
echo $yotei->EndDateTime;
echo " 利用目的:".$yotei->Title."<br />\r\n";
}
?>
全施設の今日の予約を一覧表示する
別な例として、すべての施設の当日の予約を表示する。
<?php
$server='http://XXX.XXX.XXX.XXX:8080/gsession'; // GroupSessionのインストール場所
$token='abcdefghijklmnopqrstuvwxyz='; // トークン
$options = array(
'http' => array(
'method' => 'POST',
'header'=> "Authorization: Bearer ".$token."\r\n"
)
);
// 今日の予約を取得する
$n = new DateTime();
$start= $n->format('Y/m/d 00:00');
$end = $n->format('Y/m/d 23:59');
$url2 = $server."/api/reserve/yoyaku/search.do?startTime=".urlencode($start)."&endTime=".urlencode($end);
$context2 = stream_context_create( $options );
$result2 = file_get_contents( $url2, false, $context2 );
$reader2 = new SimpleXMLElement($result2);
// 表示する
foreach ($reader2->Result as $yotei) {
echo "予約日時:".$yotei->StartDateTime;
echo "~".$yotei->EndDateTime;
echo " 施設:".$yotei->RsdName;
echo " 利用目的:".$yotei->Title."<br />\r\n";
}
?>
余談
他システムからGroupSessionに自動ログイン
http://(サーバーのIPアドレス):8080/gsession/common/cmn001.do?cmn001Userid=(ユーザー名)&cmn001Passwd=(パスワード)&CMD=login
パスワードが丸見えなので使いどころには注意してください。