Я хочу иметь возможность получать ответы от: а) как можно большего числа людей на канале; б) идентифицировать пользователя, который выбрал какой вариант
. По какой-то причине, после того, как первый человек нажал, после любого ответапросто идет к запасному варианту.
Как бы мне этого добиться?и это мой файл
Это моя страница контроллера: -
namespace App\Conversations;
namespace App\Http\Controllers;
use App\Conversations\ExampleConversation;
use App\Conversations\MenuConversation;
use BotMan\BotMan\Messages\Incoming\Answer;
use BotMan\BotMan\Messages\Outgoing\Actions\Button;
use BotMan\BotMan\Messages\Outgoing\Question;
use BotMan\Drivers\Slack\Extensions\Menu;
use GuzzleHttp\Client;
use Illuminate\Http\Request;
class BotSlackController extends Controller
{
public function getSlackUsers()
{
$guzzle = \App::make(Client::class);
$user_data = [];
$slack_token = "xoxb-2893074844-363165652051-cCiOK0lMGHf5e72QF6s04Nbl";
$user_list_url = "https://slack.com/api/users.list?token=$slack_token&pretty=1";
$user_list = $guzzle->request('GET', $user_list_url)->getBody()->getContents();
$user_list = json_decode($user_list);
if (!empty($user_list->members)) {
foreach ($user_list->members as $user_info) {
if ($user_info->deleted == true) {
continue;
}
$user_data[] = ['id' => $user_info->id, 'name' => $user_info->real_name];
}
}
return $user_data;
}
public function sendMessageView()
{
$slack_users = $this->getSlackUsers();
return view('slackMessage', ['slack_users' => $slack_users]);
}
public function sendControllerBot(Request $request) {
/*$data = \App::make(ExampleConversation::class);
$data->sendBot($request);*/
$botman = app('botman');
$user_id = $request['slackUserId'];
$user_msg = $request['slackMessage'];
$botman->startConversation(new MenuConversation(),$user_id,\BotMan\Drivers\Slack\SlackDriver::class);
//$botman->listen();
}
}
Это мой файл MenuConversation: -
<?php
namespace App\Conversations;
use BotMan\BotMan\Messages\Incoming\Answer;
use BotMan\BotMan\Messages\Outgoing\Question;
use BotMan\BotMan\Messages\Outgoing\Actions\Button;
use BotMan\BotMan\Messages\Conversations\Conversation;
class MenuConversation extends Conversation
{
public function askBtn()
{
$question = Question::create("Hello, How are you?")
->fallback('Unable to create a new database')
->callbackId('ask_btn')
->addButtons([
Button::create('I am fine')->value('fine'),
Button::create('Not good')->value('no_good'),
Button::create('Do not disturb')->value('wont_disturb')
]);
return $this->ask($question, function (Answer $answer) {
if ($answer->isInteractiveMessageReply()) {
$result = $answer->getValue();
//Will actually store it in a DB and yet to figure how to retrieve the Slack User that selected the option
/\* $this->say("Hello I got your response. Response: ".$result); \*/
$this->bot->reply("Hello I got your response. Response: ".$result);
}
});
}
public function run()
{
$this->askBtn();
}
}
Первый раз, когда я нажимаю любую кнопкуЯ получаю значение кнопки, которую я нажал, но сразу после второго нажатия она переходит к моей резервной функции, которую я создал в botman.php
.
Пожалуйста, помогите мне в этом.
- Как я могу получить многократный ответ (или многократный щелчок)
- Если я отправлю сообщение в публичный канал вместо конкретного пользователя, как я могу получить идентификатор пользователя, который нажал кнопку.