2017-12-28 3 views
-2

는이 같은 노드 빨간색 객체 메시지가 :노드 빨간색 JSON 객체

{ chatId: 111111111, messageId: 1111, type: "message", content: "VENT Auto", date: "2017-12-28T19:46:45.000Z",inbound: true }

나는이 메시지를 분석하고이 같은 기능을하는 경우 작성하려면 :

if (chatId==111111111){return msg;} 

나는이 시도 : json parse-1

json-parse-2

이 연료 소모량의 출력

if (msg.payload.chatid== 11111111){return msg) 

및 MSG된다 :

msg=msg.payload.chatId 
return msg 

는 I 출력에서 ​​chatid보고 싶어 :

json-parse-3

이 451,515,레드 노드 내의 함수

[{"id":"b068944.8218168","type":"chatbot-telegram-receive","z":"52d0aba5.3f0a3c","bot":"","x":170,"y":600,"wires":[["f479d424.fe9e3"]]},{"id":"f479d424.fe9e3","type":"function","z":"52d0aba5.3f0a3c","name":"","func":"\nreturn msg;","outputs":1,"noerr":0,"x":370,"y":620,"wires":[["c8f111dc.9ac8d"]]},{"id":"ba82cead.cdf808","type":"change","z":"52d0aba5.3f0a3c","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.content","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":580,"y":620,"wires":[["5f96e508.3d69cc"]]},{"id":"c8f111dc.9ac8d","type":"function","z":"52d0aba5.3f0a3c","name":"","func":"msg=msg.payload.chatId\nreturn msg\n","outputs":1,"noerr":0,"x":330,"y":700,"wires":[["ba82cead.cdf808"]]}] 

전보 봇에게 메시지를 보내고 싶습니다. 채팅 ID를 내 채팅 ID와 비교합니다.

+0

첫째, Node-RED 기능 노드는 Java가 아닌 JavaScript를 사용합니다. 둘째 스택 오버 플로우는 이런 식으로 작동하지 않습니다. 직접 시도해야합니다. 그러면 누군가가 이미 시도한 것을 고칠 수 있습니다. – hardillb

+0

몇 가지 방법을 시도했지만이 같은 질문을 찾지 못했습니다. – REZA

+0

그런 다음 질문을 편집하여 시도한 내용을 표시하십시오. – hardillb

답변

0

함수 노드에서 항상 전체 메시지 객체를 반환해야합니다. 당신은 단지 문자열을 반환하려고 노력하고 있습니다, 이것은 작동하지 않습니다.

id와 일치하지 않는 메시지가 전달되는 것을 막으려면 다음 두 가지 방법 중 하나를 사용하십시오. 이 단지 chatId은 다음과 스위치 모드가 사용 111111111

  • 경우 메시지가 통과 할 수

    if (msg.payload.chatId == "111111111") { 
        return msg; 
    } 
    

    :

    1. 다음 코드와 함수 노드를 사용

      enter image description here

  • +0

    고맙습니다. 그것은 효과가 있었다. 메리 크리스마스. – REZA

    관련 문제