Невозможно ответить более чем одним кликом на интерактивном сообщении - PullRequest
0 голосов
/ 31 мая 2018

Я хочу иметь возможность получать ответы от: а) как можно большего числа людей на канале; б) идентифицировать пользователя, который выбрал какой вариант

. По какой-то причине, после того, как первый человек нажал, после любого ответапросто идет к запасному варианту.

Как бы мне этого добиться?и это мой файл

Это моя страница контроллера: -

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.

Пожалуйста, помогите мне в этом.

  1. Как я могу получить многократный ответ (или многократный щелчок)
  2. Если я отправлю сообщение в публичный канал вместо конкретного пользователя, как я могу получить идентификатор пользователя, который нажал кнопку.
...