2

从那里的信息量来看,这似乎不是执行mattermost webhook 的常用方法。我们有一个最重要的安装,我们有一个用于查找库存的旧 Web 应用程序,我们希望能够通过 webhook 向团队发送包含与零件搜索请求相关的一些信息的消息。

我几乎认为我可以通过将“有效负载”设置为参数来向 webhook URL 发出 ajax 发布请求,但这会返回 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 .= '"}';

它按预期工作。

4

1 回答 1

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
});

超级简单,也是我最初想要实现的。

于 2017-05-19T16:55:09.330 回答