如何让 Slack 对对话做出 post 响应? (php)
How do I get Slack to post a response to a dialog? (php)
我有一个创建对话框的斜杠命令。当按下提交按钮时,这工作正常并且 returns OK。
OpenSlash.php
// Build Dialog
$dialog =
[
'callback_id' => 'submit_session',
'type' => 'modal',
'title' => 'Controller Feedback',
'submit_label' => 'Submit',
'elements' =>
[
[
'type' => 'textarea',
'label' => 'Feedback',
'name' => 'f_feedback'
]
]
];
// define POST query parameters
$query = [
'token' => 'xxxx',
'dialog' => json_encode($dialog),
'trigger_id' => $triggerid
];
// define the curl request
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://slack.com/api/dialog.open');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/x-www-form-urlencoded'
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
// set the POST query parameters
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($query));
// execute curl request
$response = curl_exec($ch);
// close
curl_close($ch);
当我尝试输出或记录负载 post 时,我没有收到任何返回信息。我错过了什么吗?
Response.php
$payload = filter_input(INPUT_POST, 'payload');
$decoded = json_decode($payload);
file_put_contents("post.log", $_POST['payload']);
我想通了。
$payload_json = filter_input(INPUT_POST, 'payload', FILTER_SANITIZE_STRING, FILTER_FLAG_NO_ENCODE_QUOTES);
$payload = json_decode ($payload_json, true);
$type = $payload['type'];
$callback = $payload['callback_id'];
if ($type == 'dialog_submission' && $callback == 'submit_session')
{
$f_var1 = mysqli_real_escape_string($db,$payload['submission']['f_var1']);
$f_var2 = mysqli_real_escape_string($db,$payload['submission']['f_var2']);
... do other stuff...
}
我有一个创建对话框的斜杠命令。当按下提交按钮时,这工作正常并且 returns OK。
OpenSlash.php
// Build Dialog
$dialog =
[
'callback_id' => 'submit_session',
'type' => 'modal',
'title' => 'Controller Feedback',
'submit_label' => 'Submit',
'elements' =>
[
[
'type' => 'textarea',
'label' => 'Feedback',
'name' => 'f_feedback'
]
]
];
// define POST query parameters
$query = [
'token' => 'xxxx',
'dialog' => json_encode($dialog),
'trigger_id' => $triggerid
];
// define the curl request
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://slack.com/api/dialog.open');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/x-www-form-urlencoded'
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
// set the POST query parameters
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($query));
// execute curl request
$response = curl_exec($ch);
// close
curl_close($ch);
当我尝试输出或记录负载 post 时,我没有收到任何返回信息。我错过了什么吗?
Response.php
$payload = filter_input(INPUT_POST, 'payload');
$decoded = json_decode($payload);
file_put_contents("post.log", $_POST['payload']);
我想通了。
$payload_json = filter_input(INPUT_POST, 'payload', FILTER_SANITIZE_STRING, FILTER_FLAG_NO_ENCODE_QUOTES);
$payload = json_decode ($payload_json, true);
$type = $payload['type'];
$callback = $payload['callback_id'];
if ($type == 'dialog_submission' && $callback == 'submit_session')
{
$f_var1 = mysqli_real_escape_string($db,$payload['submission']['f_var1']);
$f_var2 = mysqli_real_escape_string($db,$payload['submission']['f_var2']);
... do other stuff...
}