- create a bot.
- create an Webhook agent and add it to your bot.
- paste the code into a Javascript agent and recieve fron webhook.
- create two agents - one for sending messages to Telegram, another for Wechat.
- Link those stuffs and play with them,
Last active
June 1, 2018 02:29
-
-
Save Alan-Liang/4b5cf4988dbf08c5d26edcc7a2986697 to your computer and use it in GitHub Desktop.
Some strange integration between Telegram, Huginn and Wechat for Work
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Agent.receive = function() { | |
var self=this; | |
var NONE=0, | |
SETTING_TOKEN=1, | |
SETTING_ID=2, | |
SETTING_SECRET=3, | |
DOING_REQUEST=4, | |
SENDING_JSON=5, | |
SENDING_TEXTUID_1=6, | |
SENDING_TEXTUID_2=7, | |
SENDING_TEXTUID_3=8; | |
var sendText=function(chat,text){ | |
//todo: sendText() and doWechat() | |
self.createEvent({text:text,id:chat.id}); | |
}; | |
var post=function(url,payload){ | |
try{ | |
self.log(JSON.parse(payload)); | |
}catch(e){ | |
self.log(e.stack); | |
} | |
self.createEvent({url:url,payload:payload}); | |
}; | |
var checkState=function(chat){ | |
if(chat.state){ | |
sendText(chat,"You are using another command now - Use /cancel to cancel."); | |
return true; | |
} | |
return false; | |
}; | |
var doHelp=function(chat){ | |
sendText(chat,self.credential("KMBotHelp")); | |
}; | |
var events = this.incomingEvents(); | |
for(var i = 0; i < events.length; i++) { | |
var evt=events[i].payload; | |
if(evt.message&&evt.message.text){ | |
//text! | |
var text=evt.message.text.toString(); | |
var chatId=evt.message.chat.id; | |
var chat=this.memory("chat/"+chatId)||evt.message.chat; | |
if(text.charAt(0)=='/'){ | |
//command | |
switch(text){ | |
case "/cancel": | |
if(!chat.state) | |
sendText(chat,"No command to cancel!"); | |
else{ | |
sendText(chat,"Command Canceled."); | |
chat.state=NONE; | |
} | |
break; | |
case "/settoken": | |
if(chat.state==SETTING_TOKEN) | |
break; | |
if(checkState(chat)) | |
break; | |
sendText(chat,"Input your access token~"); | |
chat.state=SETTING_TOKEN; | |
break; | |
case "/setid": | |
if(chat.state==SETTING_ID || checkState(chat)) | |
break; | |
sendText(chat,"Input your corpid~"); | |
chat.state=SETTING_ID; | |
break; | |
case "/setsecret": | |
if(chat.state==SETTING_SECRET || checkState(chat)) | |
break; | |
sendText(chat,"Input your corpsecret~"); | |
chat.state=SETTING_SECRET; | |
break; | |
case "/sendtext": | |
sendText(chat,"TODO"); | |
break; | |
case "/sendjson": | |
if(chat.state==SENDING_JSON || checkState(chat)) | |
break; | |
if(!chat.token){ | |
sendText(chat,"Token not set!"); | |
break; | |
} | |
sendText(chat,"Send me the JSON."); | |
chat.state=SENDING_JSON; | |
break; | |
case "/gettokenurl": | |
if(!(chat.cid&&chat.secret)) | |
sendText(chat,"Config missing!"); | |
else sendText(chat,"https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid="+chat.cid+"&corpsecret="+chat.secret); | |
break; | |
case "/sendtextuid": | |
if(checkState(chat)) | |
break; | |
if(!chat.token){ | |
sendText(chat,"Token not set!"); | |
break; | |
} | |
sendText(chat,"Enter recieptant uid:"); | |
chat.state=SENDING_TEXTUID_1; | |
break; | |
case "/": | |
case "/help": | |
default: | |
//todo:help | |
doHelp(chat); | |
} | |
}else{ | |
switch(chat.state){ | |
case SETTING_ID: | |
chat.cid=text; | |
sendText(chat,"Id saved."); | |
chat.state=NONE; | |
break; | |
case SETTING_SECRET: | |
chat.secret=text; | |
sendText(chat,"Secret saved."); | |
chat.state=NONE; | |
break; | |
case SETTING_TOKEN: | |
chat.token=text; | |
sendText(chat,"Token saved."); | |
chat.state=NONE; | |
break; | |
case DOING_REQUEST: | |
sendText(chat,"HOW DID YOU EVER DO THIS?"); | |
chat.state=NONE; | |
break; | |
case SENDING_JSON: | |
if(!chat.token){ | |
sendText(chat,"Token not set!"); | |
break; | |
} | |
post("https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token="+chat.token,text); | |
break; | |
case SENDING_TEXTUID_1: | |
chat.uid=text; | |
sendText(chat,"Enter agentid."); | |
chat.state=SENDING_TEXTUID_2; | |
break; | |
case SENDING_TEXTUID_2: | |
chat.agentid=parseInt(text); | |
sendText(chat,"Now enter what to say."); | |
chat.state=SENDING_TEXTUID_3; | |
break; | |
case SENDING_TEXTUID_3: | |
var obj={ "touser" : chat.uid, | |
"msgtype" : "text", | |
"agentid" : chat.agentid, | |
"text" : { "content":text }, | |
"safe":0 | |
}; | |
var payload=JSON.stringify(obj); | |
post("https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token="+chat.token,payload); | |
chat.state=NONE; | |
break; | |
case NONE: | |
default: | |
doHelp(chat); | |
} | |
} | |
this.memory("chat/"+chatId,chat); | |
} | |
//else nonsense | |
//this.createEvent({ 'message': 'I got an event!', 'event_was': events[i].payload }); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment