| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- <?php
- /*
- * This file is part of the overtrue/wechat.
- *
- * (c) overtrue <i@overtrue.me>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
- /**
- * MessageBuilder.php.
- *
- * @author overtrue <i@overtrue.me>
- * @copyright 2015 overtrue <i@overtrue.me>
- *
- * @see https://github.com/overtrue
- * @see http://overtrue.me
- */
- namespace EasyWeChat\Staff;
- use EasyWeChat\Core\Exceptions\InvalidArgumentException;
- use EasyWeChat\Core\Exceptions\RuntimeException;
- use EasyWeChat\Message\AbstractMessage;
- use EasyWeChat\Message\Raw as RawMessage;
- use EasyWeChat\Message\Text;
- /**
- * Class MessageBuilder.
- */
- class MessageBuilder
- {
- /**
- * Message to send.
- *
- * @var \EasyWeChat\Message\AbstractMessage;
- */
- protected $message;
- /**
- * Message target user open id.
- *
- * @var string
- */
- protected $to;
- /**
- * Message sender staff id.
- *
- * @var string
- */
- protected $account;
- /**
- * Staff instance.
- *
- * @var \EasyWeChat\Staff\Staff
- */
- protected $staff;
- /**
- * MessageBuilder constructor.
- *
- * @param \EasyWeChat\Staff\Staff $staff
- */
- public function __construct(Staff $staff)
- {
- $this->staff = $staff;
- }
- /**
- * Set message to send.
- *
- * @param string|AbstractMessage $message
- *
- * @return MessageBuilder
- *
- * @throws InvalidArgumentException
- */
- public function message($message)
- {
- if (is_string($message)) {
- $message = new Text(['content' => $message]);
- }
- $this->message = $message;
- return $this;
- }
- /**
- * Set staff account to send message.
- *
- * @param string $account
- *
- * @return MessageBuilder
- */
- public function by($account)
- {
- $this->account = $account;
- return $this;
- }
- /**
- * Set target user open id.
- *
- * @param string $openId
- *
- * @return MessageBuilder
- */
- public function to($openId)
- {
- $this->to = $openId;
- return $this;
- }
- /**
- * Send the message.
- *
- * @return bool
- *
- * @throws RuntimeException
- */
- public function send()
- {
- if (empty($this->message)) {
- throw new RuntimeException('No message to send.');
- }
- $transformer = new Transformer();
- if ($this->message instanceof RawMessage) {
- $message = $this->message->get('content');
- } else {
- $content = $transformer->transform($this->message);
- $message = [
- 'touser' => $this->to,
- ];
- if ($this->account) {
- $message['customservice'] = ['kf_account' => $this->account];
- }
- $message = array_merge($message, $content);
- }
- return $this->staff->send($message);
- }
- /**
- * Return property.
- *
- * @param $property
- *
- * @return mixed
- */
- public function __get($property)
- {
- if (property_exists($this, $property)) {
- return $this->$property;
- }
- }
- }
|