Slack\RealTimeClient::postMessage PHP Méthode

postMessage() public méthode

{@inheritDoc}
public postMessage ( Message $message )
$message Slack\Message\Message
    public function postMessage(Message $message)
    {
        if (!$this->connected) {
            return Promise\reject(new ConnectionException('Client not connected. Did you forget to call `connect()`?'));
        }
        // We can't send attachments using the RTM API, so revert to the web API
        // to send the message
        if ($message->hasAttachments()) {
            return parent::postMessage($message);
        }
        $data = ['id' => ++$this->lastMessageId, 'type' => 'message', 'channel' => $message->data['channel'], 'text' => $message->getText()];
        $this->websocket->send(json_encode($data));
        // Create a deferred object and add message to pending list so when a
        // success message arrives, we can de-queue it and resolve the promise.
        $deferred = new Promise\Deferred();
        $this->pendingMessages[$this->lastMessageId] = $deferred;
        return $deferred->promise();
    }

Usage Example

Exemple #1
0
 /**
  * @param \T3Bot\Slack\Message|string $messageToSent
  * @param string $user
  * @param string $channel the channel id
  */
 public function sendResponse($messageToSent, $user = null, $channel = null)
 {
     $data = [];
     if ($user !== null) {
         $this->client->apiCall('im.open', ['user' => $user])->then(function (Payload $response) use($messageToSent) {
             $channel = $response->getData()['channel']['id'];
             if ($messageToSent instanceof Message) {
                 $data = [];
                 $data['unfurl_links'] = false;
                 $data['unfurl_media'] = false;
                 $data['parse'] = 'none';
                 $data['text'] = $messageToSent->getText();
                 $data['channel'] = $channel;
                 $attachments = $messageToSent->getAttachments();
                 if (count($attachments)) {
                     $data['attachments'] = array();
                 }
                 /** @var \T3Bot\Slack\Message\Attachment $attachment */
                 foreach ($attachments as $attachment) {
                     $data['attachments'][] = Attachment::fromData(['title' => $attachment->getTitle(), 'title_link' => $attachment->getTitleLink(), 'text' => $attachment->getText(), 'fallback' => $attachment->getFallback(), 'color' => $attachment->getColor(), 'pretext' => $attachment->getPretext(), 'author_name' => $attachment->getAuthorName(), 'author_icon' => $attachment->getAuthorIcon(), 'author_link' => $attachment->getAuthorLink(), 'image_url' => $attachment->getImageUrl(), 'thumb_url' => $attachment->getThumbUrl()]);
                 }
                 $message = new \Slack\Message\Message($this->client, $data);
                 $this->client->postMessage($message);
             } elseif (is_string($messageToSent)) {
                 $data = [];
                 $data['unfurl_links'] = false;
                 $data['unfurl_media'] = false;
                 $data['parse'] = 'none';
                 $data['text'] = $messageToSent;
                 $data['channel'] = $channel;
                 $data['as_user'] = true;
                 $this->client->apiCall('chat.postMessage', $data);
             }
         });
     } else {
         $channel = $channel !== null ? $channel : $this->payload->getData()['channel'];
         if ($messageToSent instanceof Message) {
             $data['unfurl_links'] = false;
             $data['unfurl_media'] = false;
             $data['parse'] = 'none';
             $data['text'] = $messageToSent->getText();
             $data['channel'] = $channel;
             $attachments = $messageToSent->getAttachments();
             if (count($attachments)) {
                 $data['attachments'] = array();
             }
             /** @var \T3Bot\Slack\Message\Attachment $attachment */
             foreach ($attachments as $attachment) {
                 $data['attachments'][] = Attachment::fromData(['title' => $attachment->getTitle(), 'title_link' => $attachment->getTitleLink(), 'text' => $attachment->getText(), 'fallback' => $attachment->getFallback(), 'color' => $attachment->getColor(), 'pretext' => $attachment->getPretext(), 'author_name' => $attachment->getAuthorName(), 'author_icon' => $attachment->getAuthorIcon(), 'author_link' => $attachment->getAuthorLink(), 'image_url' => $attachment->getImageUrl(), 'thumb_url' => $attachment->getThumbUrl()]);
             }
             $message = new \Slack\Message\Message($this->client, $data);
             $this->client->postMessage($message);
         } elseif (is_string($messageToSent)) {
             $data['unfurl_links'] = false;
             $data['unfurl_media'] = false;
             $data['parse'] = 'none';
             $data['text'] = $messageToSent;
             $data['channel'] = $channel;
             $data['as_user'] = true;
             $this->client->apiCall('chat.postMessage', $data);
         }
     }
 }