Chatworkにlaravelからメッセージ送信(通知)
ログ等をChatworkに送信したい
現状ChatworkにはslackのようなIncoming Webhookが無いのでエンドポイントを使用します。
エンドポイントへはhttpsで接続してください、httpでは接続エラーになります。
php
<?php
namespace App\Utils;
class ChatworkRequest
{
public static function postRequest($apiKey, $roomId, $body)
{
// ヘッダー
header("Content-type: text/html; charset=utf-8");
$params = array(
"body" => $body //送信したいメッセージ
);
// cURLでPOST
$ch = curl_init();
// cURLの設定
//{roomId}には取得したルームIDを入れる
curl_setopt($ch, CURLOPT_URL, "https://api.chatwork.com/v2/rooms/{$roomId}/messages");
curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-ChatWorkToken: ' . $apiKey));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 結果を文字列で返す
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // サーバー証明書の検証を行わない
curl_setopt($ch, CURLOPT_POST, true); // HTTP POSTを実行
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params, '', '&'));
$rsp = curl_exec($ch);
curl_close($ch);
$res = json_decode($rsp);
return $res;
}
}
ApiKey、送信先のルームID、メッセージ内容を引数にいれてバッチ処理等で実行する。
基本はこの形になります。
ルーム内の全員にメッセージを通知したい場合
簡単です。body内に[toall]を埋め込むと全員に通知されます。
$params = array(
"body" => "[toall]\n".$body
);
注意点
1.APIキーには有効期限がなく、第三者に知られてしまうと機能にフルアクセスが可能になるので
DBに保存する際は必ず暗号化する。
2.送信されたメッセージは自分自身が送信している形になる。問題なければそのままでも大丈夫ですが
通知botとして機能させたいのであれば通知用のアカウントを作成するのがおすすめです。
Author And Source
この問題について(Chatworkにlaravelからメッセージ送信(通知)), 我々は、より多くの情報をここで見つけました https://qiita.com/aw-hayanno/items/6ebe4277daa938c0fa2f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .