接收webhook事件

請先至哈哈姆特不EY-Bot開發者後台設定webhook網址

哈哈姆特server將會以 POST 的方式,將 webhook 事件傳送至所填寫的webhook網址。


注意:webhook網址必須使用https

事件格式

{
 "botid":<BOT_ID>,
 "time":1512353744843,
 "messaging":[
   {
     "sender_id":<SENDER_ID>,
     "message":{
       "text":"Hello~"
     }
   }
 ]
}

必須回覆 200 OK

接收 webhook 事件後,必須傳回 200 OK HTTP 回應。

驗證 webhook 事件

這項 HTTP 要求將包含 x-baha-data-signature 標頭,其中包含要求承載的 SHA1 簽章,所使用的密鑰為應用程式密鑰,開頭則是 sha1=。您的回呼端點可以檢查這個簽章,以驗證承載的完整性和原始來源。

nodejs 範例

var crypto = require('crypto');

var hmac = crypto.createHmac('sha1', <APP_SECRET>);
hmac.update(JSON.stringify(req.body), 'utf-8');
var expectedSignature = 'sha1=' + hmac.digest('hex');


if (req.headers['x-baha-data-signature'] != expectedSignature) {
 console.log('not ok');
} else {
 console.log('ok');
}

php 範例

$body = file_get_contents("php://input");
$signature = $_SERVER['HTTP_X_BAHA_DATA_SIGNATURE'];

$expectedOutput = 'sha1='.hash_hmac('sha1', $body, <APP_SECRET>, false);

if ($signature !== $expectedOutput) {
 echo 'not ok';
} else {
 echo 'ok';
}