Simsimi can we borrow her brain to control Telegram bots. So that bots can talk like simsimi.
We can access Simsimi's intelligence with the API Key / API / Token Key.
There are two API / Token keys given by simsimi:
- Trial Key (free)
- Paid Key
Trial keys are only valid for 7 days with a limit of 100 requests / day.
If it crosses that line, Simsimi won't respond.
I'll tell you later at the end of this guide .
Well, let's start making Telegram bots with Simsimi's intelligence.
How the Bot Works with Hook.io and Simsimi
Previously, please know how to communicate bot with Hook.io and Simsimi API.
The bot sends the text (message) to Hook.io, then Hook.io forwards the request to Simsimi.
Simsimi gives a reply, the code in Hook.io processes it and sends a reply to the Bot.
It's easy?
Materials needed
- Telegram Bot Token ( How to get it ): its function to access Telegram Bots.
- Hook.io account ( Register here ): where to store bot codes.
- API / Token Simsimi Key ( Register here ): its function to access Simsimi's intelligence.
Make sure you have prepared all the ingredients.
Make a Service at Hook.io
Name is filled with the desired name.
For example, I made a service called
iyan-chan
.
When done, we will have our own server with the address
https://hook.io/<username>/<nama service>/
My example:
https://hook.io/ardianta/iyan-chan/
Making Environmental Variables
The environment variable serves to hold the token and API Key, so that we do not deactivate tokens in the code.
Because tokens are confidential.
There are two variables that need to be made:
- variable
iyan_chan_bot
for storing Telegram Bot tokens - variable
simsimi_key
to store Key Simsimi tokens / APIs
Variables are case sensitive , upper and lower case are distinguished.
We can access this variable in the code with the object
hook.env
.
For more details, please see the next step.
Creating a Bot Control Code
Reopen the service that was created.
Please change the code (hook source) with the following code.
module['exports'] = function iyanChanBot(hook) {
var request = require('request');
var botName = "iyan"; // nama bot, silahkan ganti sesukanya
var simiUrl = 'http://sandbox.api.simsimi.com/request.p?key='+hook.env.simsimi_key+'&lc=id&ft=1.0&text='+hook.params.message.text;
// tulis teks yang dikirim dari Telegram ke Logs
console.log("Telegram: " + hook.params.message.text);
// buat request ke API Simsimi
request(simiUrl, function (error, response, body) {
if (!error && response.statusCode == 200) {
var data = JSON.parse(body);
// tampilkan balasan dari Simsimi ke Logs
console.log(data);
var pesanBalasan = "";
// kode error dari Simsimi
// 400-Bad Request.
// 401-Unauthorized.
// 404-Not found.
// 500-Server Error.
// 509-melewati batas.
if(data.result == 509 || data.result == 400 || data.result == 401 || data.result == 404 || data.result == 500 ){
pesanBalasan = botName + " sedang tidur, silahkan hubungi kakak @ardiantapargo!";
} else {
pesanBalasan = data.response;
// replace teks "simsimi" dengan nama bot
pesanBalasan = data.response.replace(/simisimi/g, botName);
pesanBalasan = data.response.replace(/simsimi/g, botName);
pesanBalasan = data.response.replace(/Simsimi/g, botName);
pesanBalasan = data.response.replace(/cimicimi/g, botName);
pesanBalasan = data.response.replace(/Simi/g, botName);
pesanBalasan = data.response.replace(/simi/g, botName);
}
// kirim balasan dari simsimi ke Bot Telegram
request
.post('https://api.telegram.org/bot' + hook.env.iyan_chan_bot + '/sendMessage')
.form({
"chat_id": hook.params.message.chat.id,
"text": pesanBalasan
});
}
});
};
The main function of the code above is to accept and make a request.
First Servie Hook.io will receive a request (chat) from the bot, then the request is forwarded to the Simsimi API.
After getting a reply from API simsimi, we send the reply back to the bot.
Pay attention:
hook.env.simsimi_key
and hook.env.iyan_chan_bot
make sure it's the same as the name of the environment variable that was created.
After that, save the code.
Don't forget to run the service:
If you get an error like this
Ignore it.
That's because there are no parameters given.
Later the parameters come from the Telegram Bot.
Connect a Bot with Hook.io
The next step connects Bot with Hook.io.
We can use the following URL to do this:
https://api.telegram.org/bot<TOKEN>/setWebhook?url=https://hook.io/<hook-user>/<hook-name>
Please replace:
<TOKEN>
with your bot token<hook-user>
with your hook.io username<hook-name>
with the name of the service / service hook that you made
Example:
https://api.telegram.org/bot247322285:AADCfe2WSna7sclLalfBq5VCmn3yTzii_zQ/setWebhook?url=https://hook.io/ardianta/iyan-chan/
Then, please open the URL via the browser.
If you get a reply like this, then the bot successfully connects with the hook.io service.
Trial Demo:
Yohoo !, The bot can respond like Simsimi.
"What should be done if the bot doesn't respond?"
First try checking the log, is there something displayed there?
Because we used the function
console.log()
to print the output there.
what I marked red is a log error, because the bot has exceeded the limit set by Simsimi. Sleeping sleep ...
In addition, we can view logs in realtime through Terminal or CMD with the command:
curl -N https://hook.io/ardianta/iyan-chan/logs
For example, see in this video.
The next thing to do is to check the code.
Is there a typo code?
Are there different uppercase and lowercase letters?
Please research.
Add Bots in the Group
Send order
/setjoingroups
.
After that add it to the Group and make the Bot an administrator.
Or if you don't have administrator access in the Group, please turn off theprivacy bot.
Then select Disable .
Description :
- Enable: means that the bot will only receive messages to the group if it is mentioned or by command
/
. - Disable: means that the bot will accept all messages in the group.
Please note, the free hook.io package has a limit of 1000 requests / month.
So use it wisely .
If you want more, please rent a paid package.
Tricks for Bots to Live
Update [May 23, 2017] : Simsimi has implemented Capcha on the web. So, we cannot access it via a bot. This method can no longer be used ...
As we know, the API simsimi trial period is up to 7 days with a limit of 100 requests / day.
This means that our bots will fall asleep if they have sent a message 100 times and will die after 7 days.
If you want to stay alive, it means you have to pay the API Key with the price of the package that has been determined .
It seems expensive if only for experiments.
Therefore, we need to 'outsmart' a little .
Then right click, select inspect elements .
Enter the network section .
After that try sending a message to Simsimi and pay attention in the Networksection .
See what we get ...
http://www.simsimi.com/getRealtimeReq?uuid=LUHzowu7l7tpHTCfe2RshB8aH0rwambBme2ZveDFAEr&lc=en&ft=1&reqText=apa+kabar+simsimi%3F&status=W
Request URL and a token.
If we open the URL, we will get JSON like this.
Well! already know what to do next.
Yep! so true…
we must modify the bot control code by using the Request URL to the URL.
So be like this.
module['exports'] = function iyanChanBot(hook) {
var request = require('request');
var botName = "iyan"; // nama bot, silahkan ganti sesukanya
//var simiUrl = 'http://sandbox.api.simsimi.com/request.p?key=0858369d-3d2d-4bcd-86b0-eaf9d523d259&lc=id&ft=1.0&text='+hook.params.message.text;
var simiUrlWeb = 'http://www.simsimi.com/getRealtimeReq?uuid=h4yA3s9wL3QPPZkPY8CfVtb3kcGYZEhZjtmGjXtT1vL&lc=id&ft=1&reqText=' + hook.params.message.text + '&status=W';
// untuk menyimpan pesan balasan dari Simsimi
var pesanBalasan = "";
// tampilkan pesan dari Telegram ke Logs
console.log("Telegram: " + hook.params.message.text);
request(simiUrlWeb, function (error, response, body) {
console.log(response);
if (!error && response.statusCode == 200) {
var data = JSON.parse(body);
console.log(data);
// 400-Bad Request.
// 401-Unauthorized.
// 404-Not found.
// 500-Server Error.
if ( data.status == 509 || data.status == 400 || data.status == 401 || data.status == 404 || data.status == 500){
pesanBalasan = botName + " sedang tidur, silahkan hubungi kakak @ardiantapargo!";
} else {
pesanBalasan = data.respSentence;
pesanBalasan = data.respSentence.replace(/simisimi/g, botName);
pesanBalasan = data.respSentence.replace(/simsimi/g, botName);
pesanBalasan = data.respSentence.replace(/Simsimi/g, botName);
pesanBalasan = data.respSentence.replace(/cimicimi/g, botName);
pesanBalasan = data.respSentence.replace(/Simi/g, botName);
pesanBalasan = data.respSentence.replace(/simi/g, botName);
}
} else {
// kalau request ke Simsimi gagal
pesanBalasan = botName + " sedang tidur, silahkan hubungi kakak @ardiantapargo!";
}
//kirim balasan ke Telegram
request
.post('https://api.telegram.org/bot' + hook.env.iyan_chan_bot + '/sendMessage')
.form({
"chat_id": hook.params.message.chat.id,
"text": pesanBalasan //hook.params.message.text
});
});
};
Save the code and run the server again.
Good luck.
Note [May 2017]: Tokens obtained from the simsimi Web do not seem to last long. I don't know exactly how long the token is. It looks like following the Cookies period in the browser.In the experiment I did in bot @iyan_chan_bot , the bot was dead. But you can come back to life by changing the token with a new one.
0 Komentar untuk "How to Make a Simsimi Telegram Bot with Webhook Hook.io Service"
Silahkan berkomentar sesuai artikel