touser) > 1000) throw new QyApiError("touser should be no more than 1000"); if (count($this->toparty) > 100) throw new QyApiError("toparty should be no more than 100"); if (count($this->totag) > 100) throw new QyApiError("toparty should be no more than 100"); if (is_null($this->messageContent)) throw new QyApiError("messageContent is empty"); $this->messageContent->CheckMessageSendArgs(); } public function Message2Array() { $args = array(); if (true == $this->sendToAll) { Utils::setIfNotNull("@all", "touser", $args); } else { // $touser_string = null; foreach($this->touser as $item) { $touser_string = $touser_string . $item . "|"; } Utils::setIfNotNull($touser_string, "touser", $args); // $toparty_string = null; foreach($this->toparty as $item) { $toparty_string = $toparty_string . $item . "|"; } Utils::setIfNotNull($toparty_string, "toparty", $args); // $totag_string = null; foreach($this->totag as $item) { $totag_string = $totag_string . $item . "|"; } Utils::setIfNotNull($totag_string, "totag", $args); } Utils::setIfNotNull($this->agentid, "agentid", $args); Utils::setIfNotNull($this->safe, "safe", $args); $this->messageContent->MessageContent2Array($args); return $args; } } // --------------------- 各种类型的 MessageContent ----------------------------- // class TextMessageContent { public $msgtype = "text"; private $content = null; // string public function __construct($content=null) { $this->content = $content; } public function CheckMessageSendArgs() { $len = strlen($this->content); if ($len == 0 || $len > 2048) { throw new QyApiError("invalid content length " . $len); } } public function MessageContent2Array(&$arr) { Utils::setIfNotNull($this->msgtype, "msgtype", $arr); $contentArr = array("content" => $this->content); Utils::setIfNotNull($contentArr, $this->msgtype, $arr); } } class ImageMessageContent { public $msgtype = "image"; private $media_id = null; // string public function __construct($media_id=null) { $this->media_id = $media_id; } public function CheckMessageSendArgs() { Utils::checkNotEmptyStr($this->media_id, "media_id"); } public function MessageContent2Array(&$arr) { Utils::setIfNotNull($this->msgtype, "msgtype", $arr); $contentArr = array("media_id" => $this->media_id); Utils::setIfNotNull($contentArr, $this->msgtype, $arr); } } class VoiceMessageContent { public $msgtype = "voice"; private $media_id = null; // string public function __construct($media_id=null) { $this->media_id = $media_id; } public function CheckMessageSendArgs() { Utils::checkNotEmptyStr($this->media_id, "media_id"); } public function MessageContent2Array(&$arr) { Utils::setIfNotNull($this->msgtype, "msgtype", $arr); $contentArr = array("media_id" => $this->media_id); Utils::setIfNotNull($contentArr, $this->msgtype, $arr); } } class VideoMessageContent { public $msgtype = "video"; public $media_id = null; // string public $title = null; // string public $description = null; // string public function __construct($media_id=null, $title=null, $description=null) { $this->media_id = $media_id; $this->title = $title; $this->description = $description; } public function CheckMessageSendArgs() { Utils::checkNotEmptyStr($this->media_id, "media_id"); } public function MessageContent2Array(&$arr) { Utils::setIfNotNull($this->msgtype, "msgtype", $arr); $contentArr = array(); { Utils::setIfNotNull($this->media_id, "media_id", $contentArr); Utils::setIfNotNull($this->title, "title", $contentArr); Utils::setIfNotNull($this->description, "description", $contentArr); } Utils::setIfNotNull($contentArr, $this->msgtype, $arr); } } class FileMessageContent { public $msgtype = "file"; public $media_id = null; // string public function __construct($media_id=null) { $this->media_id = $media_id; } public function CheckMessageSendArgs() { Utils::checkNotEmptyStr($this->media_id, "media_id"); } public function MessageContent2Array(&$arr) { Utils::setIfNotNull($this->msgtype, "msgtype", $arr); $contentArr = array(); { Utils::setIfNotNull($this->media_id, "media_id", $contentArr); } Utils::setIfNotNull($contentArr, $this->msgtype, $arr); } } class TextCardMessageContent { public $msgtype = "textcard"; public $title = null; // string public $description = null; // string public $url = null; // string public $btntxt = null; // string public function __construct($title=null, $description=null, $url=null, $btntxt=null) { $this->title = $title; $this->description = $description; $this->url = $url; $this->btntxt = $btntxt; } public function CheckMessageSendArgs() { Utils::checkNotEmptyStr($this->title, "title"); Utils::checkNotEmptyStr($this->description, "description"); Utils::checkNotEmptyStr($this->url, "url"); } public function MessageContent2Array(&$arr) { Utils::setIfNotNull($this->msgtype, "msgtype", $arr); $contentArr = array(); { Utils::setIfNotNull($this->title, "title", $contentArr); Utils::setIfNotNull($this->description, "description", $contentArr); Utils::setIfNotNull($this->url, "url", $contentArr); Utils::setIfNotNull($this->btntxt, "btntxt", $contentArr); } Utils::setIfNotNull($contentArr, $this->msgtype, $arr); } } class NewsArticle { public $title = null; // string public $description = null; // string public $url = null; // string public $picurl = null; // string public $btntxt = null; // string public function __construct($title=null, $description=null, $url=null, $picurl=null, $btntxt=null) { $this->title = $title; $this->description = $description; $this->url = $url; $this->picurl = $picurl; $this->btntxt = $btntxt; } public function CheckMessageSendArgs() { Utils::checkNotEmptyStr($this->title, "title"); Utils::checkNotEmptyStr($this->url, "url"); } public function Article2Array() { $args = array(); Utils::setIfNotNull($this->title, "title", $args); Utils::setIfNotNull($this->description, "description", $args); Utils::setIfNotNull($this->url, "url", $args); Utils::setIfNotNull($this->picurl, "picurl", $args); Utils::setIfNotNull($this->btntxt, "btntxt", $args); return $args; } } class NewsMessageContent { public $msgtype = "news"; public $articles = array(); // NewsArticle array public function __construct($articles) { $this->articles = $articles; } public function CheckMessageSendArgs() { $size = count($this->articles); if ($size < 1 || $size > 8) throw QyApiError("1~8 articles should be given"); foreach($this->articles as $item) { $item->CheckMessageSendArgs(); } } public function MessageContent2Array(&$arr) { Utils::setIfNotNull($this->msgtype, "msgtype", $arr); $articleList = array(); foreach($this->articles as $item) { $articleList[] = $item->Article2Array(); } $arr[$this->msgtype]["articles"] = $articleList; } } class MpNewsArticle { public $title = null; // string public $thumb_media_id = null; // string public $author = null; // string public $content_source_url = null; // string public $content = null; // string public $digest = null; // string public function __construct( $title=null, $thumb_media_id=null, $author=null, $content_source_url=null, $content=null, $digest=null) { $this->title = $title; $this->thumb_media_id = $thumb_media_id; $this->author = $author; $this->content_source_url = $content_source_url; $this->content = $content; $this->digest = $digest; } public function CheckMessageSendArgs() { Utils::checkNotEmptyStr($this->title, "title"); Utils::checkNotEmptyStr($this->thumb_media_id, "thumb_media_id"); Utils::checkNotEmptyStr($this->content, "content"); } public function Article2Array() { $args = array(); Utils::setIfNotNull($this->title, "title", $args); Utils::setIfNotNull($this->thumb_media_id , "thumb_media_id", $args); Utils::setIfNotNull($this->author, "author", $args); Utils::setIfNotNull($this->content_source_url, "content_source_url", $args); Utils::setIfNotNull($this->content, "content", $args); Utils::setIfNotNull($this->digest, "digest", $args); return $args; } } class MpNewsMessageContent { public $msgtype = "mpnews"; public $articles = array(); // MpNewsArticle array public function __construct($articles) { $this->articles = $articles; } public function CheckMessageSendArgs() { $size = count($this->articles); if ($size < 1 || $size > 8) throw QyApiError("1~8 articles should be given"); foreach($this->articles as $item) { $item->CheckMessageSendArgs(); } } public function MessageContent2Array(&$arr) { Utils::setIfNotNull($this->msgtype, "msgtype", $arr); $articleList = array(); foreach($this->articles as $item) { $articleList[] = $item->Article2Array(); } $arr[$this->msgtype]["articles"] = $articleList; } }