根据那里的信息量来判断,这似乎不是执行mattermost webhooks的常用方法。我们有一个mattermost安装,我们有一个旧的Web应用程序用于查找库存,我们希望能够通过webhook向包含与零件搜索请求相关的一些信息的团队发送消息。
我几乎以为我可以通过"有效载荷"向webhook URL发出ajax post请求。设置为一个参数,但这会返回400"无法解析传入数据",我认为无论出于何种原因,ajax请求是问题所以我创建了一个PHP脚本来执行curl请求,这就是我所拥有的;
<?php
$payload = json_encode($_REQUEST['payload']);
$ch = curl_init('http://dev2:8065/hooks/6isjcohwyibsf8kp5g9p6bcgoa');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, "$payload");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
echo $result;
此时的任何建议都是值得的。这可能无论出于何种原因都无法完成,或者我认为它是如此微不足道。
有效负载示例,
发送的有效负载:
'payload={"text": "| Component | Tests Run | Tests Failed |
|:-----------|:------------|:-----------------------------------------------|
| Server | 948 | :white_check_mark: 0|
| Web Client | 123 | :warning: [2 (see details)(http://linktologs) |
| iOS Client | 78 | :warning: [3 (see details)](http://linktologs) |"}'
整个字符串正在请求中发送。
适用于此,
如果我像这样分解php中的有效负载:
$body = '| Component | Tests Run | Tests Failed |\n|:-----------|:------------|:---------------------------------------------|\n| Server | 948 | :white_check_mark: 0 |\n| Web Client | 123 | :warning: [2 (see details)](http://linktologs) |\n| iOS Client | 78 | :warning: [3 (see details)](http://linktologs) |\n';
$payload = 'payload={"text": "';
$payload .= $body;
$payload .= '"}';
它按预期工作。
答案 0 :(得分:2)
解决方案 -
文本请求的实际字符串需要有/n
个分隔符。
一旦我能够获得一个工作请求,我就能够一直重构使用jQ的ajax请求将有效负载发送到webhook。我仍然不是100%的原因或方法。
这是有效的JS:
var body = 'payload={"text":"| Component | Tests Run | Tests Failed |\n' +
'|:-----------|:------------|:---------------------------------------------|\n'+
'| Server | 948 | :white_check_mark: 0 |\n' +
'| Web Client | 123 | :warning: [2 (see details)](http://linktologs) |\n' +
'| iOS Client | 78 | :warning: [3 (see details)](http://linktologs) |\n"}';
$.ajax({
type: 'POST',
url: "http://dev2:8065/hooks/6isjcohwyibsf8kp5g9p6bcgoa",
data: body
});
超级简单,以及我最初试图实现的目标。