前提・実現したいこと
AWS LambdaでNode.jsを使用し、Microsoft Teamsからbotにメンションし、メッセージを送信すると返信が来るというものを作成したいと考えております。
以下のサイトを参考にしました。
https://docs.microsoft.com/ja-jp/microsoftteams/platform/webhooks-and-connectors/how-to/add-outgoing-webhook
https://github.com/OfficeDev/msteams-samples-outgoing-webhook-nodejs/blob/master/app.js
発生している問題
sharedSecretの部分にTeams上でbotを作成した際のトークンを入れて実行してみたもののタイムアウトしてしまいます。
エラーメッセージ
{
"errorMessage": "2020-06-16T07:15:53.991Z 4e27cf9e-0b56-41d3-a959-1d807df888ed Task timed out after 4.00 seconds"
}
該当のソースコード
exports.handler = function(event,context){
const crypto = require('crypto');
const sharedSecret = "<Security token generated by Microsoft Teams>";
const bufSecret = Buffer.from(sharedSecret, "base64");
var http = require('http');
var PORT = process.env.port || process.env.PORT || 8080;
http.createServer(function(request, response) {
var payload = '';
// Process the request
request.on('data', function (data) {
payload += data;
});
// Respond to the request request.on('end', function() { try { // Retrieve authorization HMAC information var auth = this.headers['authorization']; // Calculate HMAC on the message we've received using the shared secret var msgBuf = Buffer.from(payload, 'utf8'); var msgHash = "HMAC " + crypto.createHmac('sha256', bufSecret).update(msgBuf).digest("base64"); // console.log("Computed HMAC: " + msgHash); // console.log("Received HMAC: " + auth); response.writeHead(200); if (msgHash === auth) { var receivedMsg = JSON.parse(payload); var responseMsg = '{ "type": "message", "text": "You typed: ' + receivedMsg.text + '" }'; } else { var responseMsg = '{ "type": "message", "text": "Error: message sender cannot be authenticated." }'; } response.write(responseMsg); response.end(); } catch (err) { response.writeHead(400); return response.end("Error: " + err + "\n" + err.stack); } });
}).listen(PORT);
console.log('Listening on port %s', PORT);
};
試したこと
Lamdaの設定でタイムアウトの時間を30秒~1分まで伸ばしてみましたが、同じでした。
APIGatewayのエンドポイントはTeams上でbotを作成する際のコールバックURLの欄に書き込んであります。また、Lambdaとも紐づいております。
備考
初心者のため、なぜタイムアウトしてしまうのか、またこのような書き方で合っているのかがわかりません。
どうかご教示いただけますと幸いです。よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/09 05:16