diff --git a/src/SlackDriver.php b/src/SlackDriver.php index 0a142d4..cb31c86 100644 --- a/src/SlackDriver.php +++ b/src/SlackDriver.php @@ -236,7 +236,15 @@ private function convertQuestion(Question $question) */ public function buildServicePayload($message, $matchingMessage, $additionalParameters = []) { - if (! Collection::make($matchingMessage->getPayload())->has('team_domain')) { + $matchingMessagePayload = $matchingMessage->getPayload(); + + // If the matching message is in a thread, reply there + $thread_ts = $matchingMessagePayload->get('thread_ts'); + if (! empty($thread_ts)) { + $additionalParameters['thread_ts'] = $thread_ts; + } + + if (! Collection::make($matchingMessagePayload)->has('team_domain')) { $this->resultType = self::RESULT_TOKEN; $payload = $this->replyWithToken($message, $matchingMessage, $additionalParameters); } else { @@ -263,16 +271,14 @@ public function sendPayload($payload) } /** - * @param $message + * @param $message * @param array $additionalParameters * @param \BotMan\BotMan\Messages\Incoming\IncomingMessage $matchingMessage * @return array */ public function replyInThread($message, $additionalParameters, $matchingMessage, BotMan $bot) { - $additionalParameters['thread_ts'] = ! empty($matchingMessage->getPayload()->get('thread_ts')) - ? $matchingMessage->getPayload()->get('thread_ts') - : $matchingMessage->getPayload()->get('ts'); + $additionalParameters['thread_ts'] = $matchingMessage->getPayload()->get('ts'); $payload = $this->buildServicePayload($message, $matchingMessage, $additionalParameters); @@ -280,7 +286,7 @@ public function replyInThread($message, $additionalParameters, $matchingMessage, } /** - * @param $message + * @param $message * @param array $additionalParameters * @param \BotMan\BotMan\Messages\Incoming\IncomingMessage $matchingMessage * @return array diff --git a/src/SlackRTMDriver.php b/src/SlackRTMDriver.php index 8a30458..9a1d14f 100644 --- a/src/SlackRTMDriver.php +++ b/src/SlackRTMDriver.php @@ -250,6 +250,12 @@ protected function isBot() */ public function buildServicePayload($message, $matchingMessage, $additionalParameters = []) { + // If the matching message is in a thread, reply there + $thread_ts = $matchingMessage->getPayload()->get('thread_ts'); + if (! empty($thread_ts)) { + $additionalParameters['thread_ts'] = $thread_ts; + } + $parameters = array_replace_recursive([ 'channel' => $matchingMessage->getRecipient() ?: $matchingMessage->getSender(), 'as_user' => true, @@ -269,7 +275,7 @@ public function buildServicePayload($message, $matchingMessage, $additionalParam ], ]); - // else check if is a path + // else check if is a path } elseif ($attachment instanceof BotManFile && file_exists($attachment->getUrl())) { $this->file = (new File()) ->setTitle(basename($attachment->getUrl())) @@ -301,16 +307,14 @@ public function sendPayload($payload) } /** - * @param $message + * @param $message * @param array $additionalParameters * @param IncomingMessage $matchingMessage * @return SlackRTMDriver */ public function replyInThread($message, $additionalParameters, $matchingMessage) { - $additionalParameters['thread_ts'] = ! empty($matchingMessage->getPayload()->get('thread_ts')) - ? $matchingMessage->getPayload()->get('thread_ts') - : $matchingMessage->getPayload()->get('ts'); + $additionalParameters['thread_ts'] = $matchingMessage->getPayload()->get('ts'); return $this->reply($message, $matchingMessage, $additionalParameters); } @@ -406,7 +410,7 @@ public function getClient() /** * Low-level method to perform driver specific API requests. * - * @param $endpoint + * @param $endpoint * @param array $parameters * @param IncomingMessage $matchingMessage * @return \React\Promise\PromiseInterface