Skip to content

Commit d930456

Browse files
authored
Merge pull request calchen#6 from aolinver/master
增加消息内链接跳转方式
2 parents a669b27 + d749471 commit d930456

File tree

4 files changed

+26
-10
lines changed

4 files changed

+26
-10
lines changed

src/Message/ActionCardMessage.php

+6-4
Original file line numberDiff line numberDiff line change
@@ -87,13 +87,14 @@ public function setMessage(string $title, string $text, $hideAvatar = null, $btn
8787
*
8888
* @param string $singleTitle 单个按钮的方案。(设置此项和singleURL后btns无效。)
8989
* @param string $singleUrl 点击singleTitle按钮触发的URL
90+
* @param bool $pcSlide 链接在钉钉侧栏打开,false则在浏览器打开
9091
*
9192
* @return $this
9293
*/
93-
public function setSingle(string $singleTitle, string $singleUrl): self
94+
public function setSingle(string $singleTitle, string $singleUrl, bool $pcSlide = true): self
9495
{
9596
$this->message['actionCard']['singleTitle'] = $singleTitle;
96-
$this->message['actionCard']['singleURL'] = $singleUrl;
97+
$this->message['actionCard']['singleURL'] = $this->getFinalUrl($singleUrl, $pcSlide);
9798
unset($this->message['actionCard']['btns']);
9899

99100
return $this;
@@ -104,14 +105,15 @@ public function setSingle(string $singleTitle, string $singleUrl): self
104105
*
105106
* @param string $title 按钮方案
106107
* @param string $actionUrl 点击按钮触发的URL
108+
* @param bool $pcSlide 链接在钉钉侧栏打开,false则在浏览器打开
107109
*
108110
* @return ActionCardMessage
109111
*/
110-
public function addButton(string $title, string $actionUrl): self
112+
public function addButton(string $title, string $actionUrl, bool $pcSlide = true): self
111113
{
112114
$this->message['actionCard']['btns'][] = [
113115
'title' => $title,
114-
'actionURL' => $actionUrl,
116+
'actionURL' => $this->getFinalUrl($actionUrl, $pcSlide),
115117
];
116118
unset($this->message['actionCard']['singleTitle']);
117119
unset($this->message['actionCard']['singleURL']);

src/Message/FeedCardMessage.php

+4-3
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,16 @@ public function setMessage()
3333
* @param string $title 单条信息文本
3434
* @param string $messageUrl 点击单条信息到跳转链接
3535
* @param string $picUrl 单条信息后面图片的URL
36+
* @param bool $pcSlide 链接在钉钉侧栏打开,false则在浏览器打开
3637
*
3738
* @return FeedCardMessage
3839
*/
39-
public function addLink(string $title, string $messageUrl, string $picUrl): self
40+
public function addLink(string $title, string $messageUrl, string $picUrl, bool $pcSlide = true): self
4041
{
4142
$this->message['feedCard']['links'][] = [
4243
'title' => $title,
43-
'messageURL' => $messageUrl,
44-
'picURL' => $picUrl,
44+
'messageURL' => $this->getFinalUrl($messageUrl, $pcSlide),
45+
'picURL' => $this->getFinalUrl($picUrl, $pcSlide),
4546
];
4647

4748
return $this;

src/Message/LinkMessage.php

+4-3
Original file line numberDiff line numberDiff line change
@@ -33,18 +33,19 @@ public function __construct(
3333
* @param string $text 消息内容。如果太长只会部分展示
3434
* @param string $messageUrl 点击消息跳转的 URL
3535
* @param string $picUrl 图片 URL
36+
* @param bool $pcSlide 链接在钉钉侧栏打开,false则在浏览器打开
3637
*
3738
* @return LinkMessage
3839
*/
39-
public function setMessage(string $title, string $text, string $messageUrl, string $picUrl = ''): self
40+
public function setMessage(string $title, string $text, string $messageUrl, string $picUrl = '', bool $pcSlide = true): self
4041
{
4142
$this->message = [
4243
'msgtype' => 'link',
4344
'link' => [
4445
'title' => $title,
4546
'text' => $text,
46-
'picUrl' => $picUrl,
47-
'messageUrl' => $messageUrl,
47+
'picUrl' => $this->getFinalUrl($picUrl, $pcSlide),
48+
'messageUrl' => $this->getFinalUrl($messageUrl, $pcSlide),
4849
],
4950
];
5051

src/Message/Message.php

+12
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,18 @@ abstract class Message
1818
// 设置机器人名称,默认为 default,会根据名称去找配置
1919
protected $robot = 'default';
2020

21+
/**
22+
* 获取最终URL.
23+
* @param string $url
24+
* @param bool $pcSlide
25+
*
26+
* @return string
27+
*/
28+
public function getFinalUrl($url, $pcSlide = true): string
29+
{
30+
return sprintf('dingtalk://dingtalkclient/page/link?url=%s&pc_slide=%s', urlencode($url), $pcSlide ? 'true' : 'false');
31+
}
32+
2133
/**
2234
* 获取消息请求的请求体内容.
2335
*

0 commit comments

Comments
 (0)