PHP(フレームワークなし)でslackのslash commands(スラッシュコマンド)を作ってみます。
Slack側での作業
Slack Appの作成
Slack App画面のTOPにて[Create an App]ボタンを押すと作成画面に遷移します。

アプリ名とワークスペースを入力して作成します。

Signing Secret の確認
アプリを作成したら、Basic Information
画面のApp Credentials
の欄でSigning Secret
を確認し、控えておいてください。Slackからのリクエストの検証に必要になります。

slack commandsの作成
Feartures
の Slash Commands
で下の画面へ遷移し、[Create New Command] ボタンでコマンドを新規作成します。

Commandにコマンド名を入力します。今回は入力した内容をそのまま出力するだけのコマンドなので /echo
コマンドにします。また、Request URLに実行時にSlackから呼ばれるURLを入力します。今回は仮にhttps://hogehoge.com/slack.php
としました。説明なども適切に入力したらSaveします。

Saveすると下の状態となります。

アプリ連携
Slack側での設定は終わりましたので、アプリをワークスペースに連携しておきます。Install App
画面にて [Install App to Workspace] を押して、後は画面の指示に従います。

エンドポイントの用意
先ほど指定した https://hogehoge.com/slack.php
を用意します。入力を返すだけなので、特に難しいことはないのですが、リクエストの検証部分はこちらのドキュメントをよく読んでください。 なお 'your secret'
に控えておいたSecretを入れます。
<?php
define('SLACK_SIGNING_SECRET', 'your secret');
$body = file_get_contents('php://input');
$headers = getallheaders();
// リクエストの検証
if (verify($body, $headers) !== true) {
response('Bad Request');
}
// 入力値をそのまま返す
response($_POST['text']);
function verify(string $body, array $headers): bool
{
if (array_key_exists('X-Slack-Request-Timestamp', $headers) !== true
|| array_key_exists('X-Slack-Signature', $headers) !== true) {
return false;
}
$timestamp = $headers['X-Slack-Request-Timestamp'];
if (abs(time() - $timestamp) > 60 * 5) {
return false;
}
$base_string = 'v0:' . $timestamp . ':' . $body;
$my_signature = 'v0=' . hash_hmac('sha256', $base_string, SLACK_SIGNING_SECRET);
return $my_signature === $headers['X-Slack-Signature'];
}
function response(string $message): void
{
header("Content-type: application/json");
echo json_encode([
'response_type' => 'in_channel',
'text' => $message,
]);
exit(0);
}
実行
Appの設定が正しくできていれば、オートコンプリートが表示されます。

入力を確定すると、無事に入力した文字列が返却されました!
