Bot telegram dengan Yii2

Februari 7, 2017

ok langsung aja yaa , kita gunakan Api telegram disini https://core.telegram.org/  untuk bisa mengakses api nya, kita membutuhkan botfather layaknya CS dia akan kasih token yang sebelumnya kita membuat akun bot terlebih dulu dari botfather bisa dicek disini https://rubahmania.wordpress.com/2017/01/31/bot-telegram-dengan-foxpro/ . naa untuk di Yii saya gunakan yii2 basic, saya copas dari sini http://cintaprogramming.com/2015/07/18/membuat-bot-telegram/ terus saya sesuaikan dengan yii menggunakan httpclient dan membuat controller yang saya taruh dibawah folder commands


<?php
/**
* @link http://www.yiiframework.com/
* @copyright Copyright (c) 2008 Yii Software LLC
* @license http://www.yiiframework.com/license/
*/

namespace app\commands;
use Yii;
use yii\console\Controller;
use app\models\Yiibot;
use yii\data\ActiveDataProvider;
use yii\web\NotFoundHttpException;
use yii\filters\VerbFilter;
use yii\httpclient\Client;
/**
* This command echoes the first argument that you have entered.
*
* This command is provided as an example for you to learn how to create console commands.
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @since 2.0
*/
class YiibotController extends Controller
{
/**
* This command echoes what you have entered as the message.
* @param string $message the message to be echoed.
*/
public function actionIndex()
{
while (true) {
$this->processOne();
}
}

protected function requesturl($method)
{
// $method = $method;
return 'https://api.telegram.org/bot'.Yii::$app->params['token'].'/'.$method;
}

protected function getUpdates($offset)
{
$url = $this->requesturl("getUpdates")."?offset=".$offset;
$resp = file_get_contents($url);
$result = json_decode($resp, true);
if ($result["ok"]==1)
return $result["result"];
return [];
}

protected function sendReply($chatid, $msgid, $text)
{
$data = [
'chat_id' => $chatid,
'text' => $text,
'reply_to_message_id' => $msgid

];

$client = new Client();
$response = $client->createRequest()
->setMethod('post')
->setUrl($this->requesturl('sendMessage'))
->addHeaders([
'content-type' => 'application/x-www-form-urlencoded',

])
->setData($data)
->send();
if ($response->isOk) {

$result= $response->content;
}

print_r($result);
}

protected function createResponse($text)
{
return "definisi " . $text;
}


protected function processMessage($message)
{
$updateid = $message["update_id"];
$message_data = $message["message"];
if (isset($message_data["text"])) {
$chatid = $message_data["chat"]["id"];
$message_id = $message_data["message_id"];
$text = $message_data["text"];
$response = $this->createresponse($text);
$this->sendreply($chatid, $message_id, $response);
}
return $updateid;
}


protected function processOne()
{
$update_id = 0;

if (file_exists("last_update_id")) {
$update_id = (int)file_get_contents("last_update_id");
}

$updates = $this->getupdates($update_id);

foreach ($updates as $message)
{
$update_id = $this->processmessage($message);
}
file_put_contents("last_update_id", $update_id + 1);
}
}

selanjutkan , buka command line (cmd) masuk kedalam folder rootnya

capture

akan jalan terus,kemudian chat deh bot telegram yang dibuat 🙂


Bot Telegram dengan Foxpro

Januari 31, 2017

he hanya iseng aja, apa itu bot? bot adalah software yang secara otomatis merespon pesan yang kita berikan , naa begitulah he ,langsung aja ya

pertama, you harus instal telegram pastinya harus punya akun donk

kedua, untuk menggunakan Api Telegram kita butuh token bot nya, kita bisa minta token sama  https://telegram.me/botfather , caranya chat aja beliau he,

ketik


/newbot

nanti dibalasnya ,berikut rinciannya

1

klo selesai anda akan mendapat tokennya

1

akhirnya dapat tokennya, bisa deh kita manfaatkan

ketiga, informasi API Telegram ada di sini
https://core.telegram.org/api

ok , saya gunakan postman, untuk ngetes

/getme : liat profil bot kita


https://api.telegram.org/bot/getme

1


https://api.telegram.org/bot/getUpdates

/getUpdates : melihat chat yang masuk kebot


https://api.telegram.org/bot/sendMessage?chat_id=254066414&text=lagiada

/sendMessage : ngirim chat bro

OK, sampai sini paham kan 😀 paham aja lah

ke empat, kita pake foxpro, yiiiii , sederhana aja master, karna return dari api ada Json, maka kita gunakan function dari https://vfpx.codeplex.com/wikipage?title=nfJson&referringTitle=Home

kelimat , contoh script mengambil chat


thisform.grid1.RecordSource=''
lcurl='https://api.telegram.org/bot262999048:AAEMLOFyuFuxBnUcrkIEkn1bCzd1CvUxmkg/getUpdates'
** proses ini yang belum benar
oHTTP = Createobject("WinHTTP.WinHTTPRequest.5.1")
oHTTP.Open("POST", lcurl, .F.)
*oHTTP.setrequestheader('Content-Type', 'application/x-www-form-urlencoded;')
oHTTP.Send()
oHTTP.Status
lcrespons = oHTTP.responseText
cJson =nfJsonRead(m.lcrespons)
*?cjson.result(1).message(1).from
If cJson.ok = .T.
For Each varChat In cJson.result(1)
lid = varChat.Message(1).message_id
lnId = varChat.Message(1).From.Id
lcNama = varChat.Message(1).From.first_name
lcPesan = varChat.Message(1).Text
Select mChat
Locate For id1=lid
If !Found()
Insert Into mChat (id1,User1,Pesan1)Values(lid,lcNama,lcPesan)
Endif
Endf
Else
Messagebox('Gagal Chat',16,'Error')
Endif
Select User1,Pesan1,user2,pesan2,id1 From mChat INTO CURSOR cChat Order By id1 Asc
Select cChat
Go Top
thisform.grid1.RecordSourceType= 1
thisform.grid1.RecordSource='cChat'
Thisform.grid1.column1.DynamicBackColor="IIF(!EMPTY(ALLTRIM(User1)), RGB(255,0,0), RGB(255,255,255))"
Thisform.grid1.column2.DynamicBackColor="IIF(!EMPTY(ALLTRIM(pesan1)), RGB(255,0,0), RGB(255,255,255))"
Thisform.grid1.column3.DynamicBackColor="IIF(!EMPTY(ALLTRIM(User2)), RGB(0,255,0), RGB(255,255,255))"
Thisform.grid1.column4.DynamicBackColor="IIF(!EMPTY(ALLTRIM(pesan2)), RGB(0,255,0), RGB(255,255,255))"
Thisform.grid1.Refresh

he daripada nulis banyak nih saya kasih aja contoh formnya

whatsapp-image-2017-01-30-at-21-25-59

https://www.mediafire.com/?8dn0g2c9cor8224

 

silahkan download 😀


Share Database Mysql/MariaDb dengan Dropbox

Desember 29, 2016

OK langsung aja nih hemat kouta leemooott banget 🙂 , tau dropbox? yaa pasti tau lah media penyimpanna cloud lah dan juga punya fasilitas singkronisasi file, naa kita bisa manfaatkan itu untuk share database dan sinkron database dengan cloud he, ok begini cara singkat dan pas, saya gunaka MariaDB,

pertama, matikan service mysql

kedua, copy database yang ingin di singkronkan, paste di dalam folder dropbox, contoh

capture

kedua, modify file my.ini , sesuai path datadir,innodb_data_home_dir,innodb_log_group_home_dir lokasi dropbox anda


datadir = "C:/Users/4m4nd1t/Dropbox/data"

innodb_data_home_dir = "C:/Users/4m4nd1t/Dropbox/data"

innodb_log_group_home_dir = "C:/Users/4m4nd1t/Dropbox/data"

ketiga, restrat/start lagi servicenya

penampakan

capture

*catatat jika terjadi error saat service mysql, hapus, aja ibdata1 dan ib_logfile* , terus restart lagi OK

untuk download dropbox bisa disini https://www.dropbox.com/

 

gimana dengan menfaatk dropbox database kita bisa share via cloud singkron database dimana aja aman lancar 🙂 pake modem kah pake apapun koneksi asal jangan 12kb aja koneksi 😀 hoho

ok mg sukses selalu kawan


Menggunakan Menu CSS Bootstrap Template Di foxpro

November 24, 2016

bosan dengan menu menubar standar foxpro, hati pengen bisa menu kaya di web bisa manfaatkan bootstrap, taraaa foxpro bisa menfaatkan itu kawan, sesuai judul kita akan memanfaatkan menu dari css, misal menggunakan template bootstrap dari AdminLTE, bisa di download di sini https://almsaeedstudio.com/ , langkah selanjutnya

pertama, download tempalte adminLte, dan extrak, jika menggunakan xampp pada window taruh didalam htdocs,berikut gambarnya

1

kedua, kita coba akses di browser ketik localhost/adminLTE 

2

ketiga, ok, lanjut kefoxpor deh, bikin form baru, masukkan ole browser3

keempat,di form.init masukkan sintak ini


thisform.Olecontrol1.Navigate("http://localhost/adminLTE/")

kelimat, buat method di form kasih nama terserah situ aja,misalkan yactions, dan buat property juga dengan nama yurl

sintak method yaction


LPARAMETERS xurl
DO case
case xurl="yvfp://action1/"
MESSAGEBOX("Pesan Dari foxpro",0)
case xurl="yvfp://action2/"
DO FORM autocomplet.scx
ENDCASE

keenam,pada object olecontrol webbrowser tadi, pada event/procedure BeforeNavigate2 seperti gambar dibawah

4

kelimat, mari kita edit, index.html yang ada dala folder AdminLTE, anda bisa gunakan Notepate++ atau lainnya terserah, buka dan tambahakn sintak ini

<li class="treeview">
<a href="#">
<i class="fa fa-laptop"></i>
<span>Foxpro Banget</span>
<span class="pull-right-container">
<i class="fa fa-angle-left pull-right"></i>
</span>
</a>
<ul class="treeview-menu">
<li><a href="yvfp://action1/"><i class="fa fa-circle-o"></i>Messagebox</a></li>
<li><a href="yvfp://action2/"><i class="fa fa-circle-o"></i>Form 2</a></li>
</ul>
</li>

dimana naruhnya mas? ok anda bisa liat contoh sintak sebelumnya, bisa juga copas sintak sebelumnya pastika dari tag html <li> ampe </li> ketaun aja kq klo menggunakan notepad++ berwarna merah dan ada tanda + (plus)

udah gitu aja, inti kuncinya ada di tag <a href=”yvfp://action1/”> ini nanti yang di cek saat even procedure beforenavigate2 itu , OK moga paham yaa, dan ini bukan foxpro run browser lo ini cuma memanfaatkan menu dari template web yang bertebaran di google yang bisa kita pakai diproject foxpro kita, berikut contohnya

6

ciamik bukan, kita bisa edit menu tanpa build exe ulang,apa lagi menunya dihosting , bisa di edit nama aja menunya jika user pengen menu tambahan or pengurangan 😀 , moga mengerti aja, dan selamat berkarya


RestApi Yii dengan Foxpro

November 3, 2016

Yaa langsung aja yaa, kita tau sendiri lah sekarang era informasi terbuka,akses informasi bisa dimana saja, salah satu pintu akses informasi yaitu penggunaan webservice atau RestApi, yang mana fungsinya adalah menjembatani antara server dengan client untuk mendapatkan informasi dengan berbagai platform berbeda :), naa kali ini saya mencoba menggunakan foxpro sebagai clientnya yang mana data yg diolah sudah matang artinya siap untuk di push kedalam server ,initnya aplikasi client adalah pengolahaan data akhir dan server menerima data akhirnya saja yang mana data itu akan di tampilkan baik menggunakan browser atau mobile , Ok langsung aja yaa, saya gunakan Yii versi 2 2.10 untuk membangun restApinya 🙂 yang mana alur flownya adalah, client akan mengirimkan username dan password kemudian server akan memberikan token , dan client akan menggunakan token untuk mengirimkan data ke server, keuntungan menggunakan token adalah demi keamanan jadi tidak semua bisa akses bebas kecuali ada izin , informasi juga harus dilindungi demi keamanan data krn sifatnya publik , dibutuhkan MOU kalau mau :D,OK

pertama, saya asumsikan udah pahamlah penggunakan Yii 2 terutama Gii nya 🙂  untuk tutorialnya membangun Api bisa tengok disini aja

http://budiirawan.com/setup-restful-api-yii2/

http://lab-informatika.com/script/23/yii2-membuat-restful-web-service

yaa pinter pinter aja lah 😀

biar ga cape jelasinya saya 😀 intinya sama aja

kedua, krn tujuan saya mempust data, yaa saya menggunakan Update , untuk mengubah data yang sudah ada, Method yang di gunakan pun adalah PUT 🙂 bisa di tengok di User Guide Yii2 😀

sintaknya

yiijson

ketiga , sintak di foxpro sendiri, pertama kita dapatkan token dulu

token

keempat, buat json dari cursor


CREATE CURSOR mData (kode C(10),nama C(20))
INSERT INTO mData values('11','Adi')
INSERT INTO mData values('22','Sadi')
INSERT INTO mData values('33','Tadi')
INSERT INTO mData values('44','Ladi')
INSERT INTO mData values('55','Badi')

json

hasilnya

datajson

kelima, encode json tadi ke base64


*/
* Convert ke base64
*/

lcDataJson = STRCONV(lcDataJson,13)

keenam, masukkan kedalam post, dan gunakan token tadi dan method yang digunakan ada PUT

dataawal

dan hasilnya

dataakhir

gimana OK kan hehe 🙂 initinya dengan mengunakan RestApi ,platform apapun bisa dengan mudah mendapatkan informasi yang terupdate 🙂

btw untuk json di foxpro saya pake disini

https://vfpx.codeplex.com/wikipage?title=nfJson&referringTitle=Home

Ok sekian dan terima kasih, selamat berkarya master (y)