2017-05-17 10 views
1

情報の量から判断すると、これは重要なWebフックを実行する一般的な方法のようには見えません。重要なインストールがあり、在庫を検索するために古いWebアプリケーションが使用されています。webhook経由で、部品検索リクエストに関する情報を含むメッセージをチームに送信したいと考えています。ほとんどの着信webhooksエラー「着信データを解析できません」

「ペイロード」をパラメータとして設定したwebhook URLにajax投稿要求を作成することができたと思っていましたが、これは400個の「受信データを解析できませんでした」を返します。なぜなら、要求が問題だったので、私はカール要求を行うためにPHPスクリプトを作成しました。これは私が持っているものです。

<?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

不正なペイロードによって400 Bad Requestエラーが発生した可能性があります。質問に送信するペイロードを追加できますか? – George

+0

@George更新されたテキストは、事実上の例からの表です。 –

答えて

1

ソリューション -

テキスト要求の実際の文字列は、/n区切り文字を持っている必要があります。


私はその後、ウェブフックにペイロードを送信するためにjQののAJAX要求を使用してすべての方法をリファクタリングすることができました動作するように要求を1つ取得することができた後は。私はまだ、なぜかやりものの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 
}); 

超シンプルな、と私はもともとacheiveしようとしていました。

+0

私はこれについては確信していませんが、作業値と非作業値の間の唯一の違いに基づいて、実際の改行を含む 'text'のJSON値を' \ n's。私はそれが無効なJSONであると思うので、Mattermostサーバーからの400エラー応答の原因です。 JSON値に実際に新しい行を持たないことで、問題を回避できます。 – George

+0

@ George私は同意します、 '\ n'が差をつけました。 –

関連する問題