Telegram api. Telegram API və onun istifadəsi. Gəlin kodlaşdırmağa başlayaq
- Dərslik
Çat botları həm həvəskarları, həm də müştəriləri ilə qarşılıqlı əlaqəni onlar üçün ən əlverişli şəkildə təşkil etmək istəyən şirkətləri maraqlandıran olduqca maraqlı bir mövzudur.
Bu gün mən sizə istifadəçini salamlayacaq və hava ilə bağlı suallara cavab verəcək API.AI danışıq interfeysi qurma platformasından istifadə edərək Telegram botunun yaradılmasının sadə nümunəsini təsvir edəcəyəm. Çox hissəsi üçün bu təlimatlara əməl etdim, real praktikada siz hava şəraitindən kənara çıxa və interfeysləri həyata keçirə bilərsiniz
avtomatlaşdırılmış dəstək və ya satış üçün.
Birinci addım: infrastrukturu hazırlayın.
Bu halda biz yalnız Telegram botundan və API.AI-dən istifadə edəcəyik, hər iki xidmət pulsuz təqdim olunur - bizə sadəcə hesablar yaratmaq qalır.
Telegram botu yaradın
Bot yaratmaq üçün @BotFather yazmağınız kifayətdir (bu, digər botları yarada və konfiqurasiya edə bilən botdur):
- /newbot əmrini göndərin - bu şəkildə @BotFather'a yeni bota ehtiyacımız olduğunu bildiririk
- İndi @BotFather bizdən yeni botun adını çəkməyimizi xahiş edəcək. Bu adı bizim görəcək
gələcək istifadəçilər, buna görə də ad aydın və sadə olmalıdır. - Son addım bot üçün istifadəçi adını göstərməkdir, sonunda etməlisiniz
"bot" yazın. - Əgər ad götürülmürsə, biz təsdiq mesajı və giriş nişanı alırıq.
Daha aydın olmaq üçün aşağıda bütün hərəkətləri əks etdirən ekran görüntüsü verilmişdir:
Bir az nəzəriyyə
Əsasən layihə və ya konteyner olan API.AI agenti yaratmağın vaxtıdır (onu nə adlandırmaq istəsəniz). Agent kontekstlər, obyektlər və cavablar üçün parametrləri ehtiva edir:
- “kontekst” (Niyyət) arasındakı əlaqəni əks etdirir istifadəçi nə dedi Və
olanlar proqramımız nə etməlidir - “qurumlar”üçün parametr dəyərlərini çıxarmaq üçün bir vasitədir
proqramımız təbii dildən (dedikləri və ya yazılanlar
istifadəçi) - “cavab verir” proqramımızın yekun nəticəsidir
istifadəçiyə onun mesajını göndər
Bəzən cari dialoqdan məlumat istifadəçiyə cavab vermək üçün kifayətdir, bu halda statik qura bilərsiniz; cavablar V kontekstlər. Əslində, konkret cavab almaq üçün bizə xarici xidmət və ya öz biznes məntiqimiz lazım ola bilər, məsələn, sabah üçün hava haqqında məlumat almaq üçün müvafiq xidmətin xarici API-yə zəng etməliyik. Daha sonra sizə xarici sistemlərdən məlumatı necə qəbul edəcəyinizi söyləyəcəyəm, amma əvvəlcə baza hazırlayaq.
API.AI-də layihə yaradın
API.AI ilə qeydiyyatdan keçmək üçün sizə Google hesabı lazımdır (sadəcə onu Gmail hesabınıza əlavə edin). İndi https://api.ai/ saytına daxil olun, “PULSUZ QEYDİYYATDAN KEÇİN” düyməsini klikləyin və sonra adından daxil olmaq istədiyiniz hesabı seçin.
İndi agentin özünü yaratmağa keçək. "Agent yarat" üzərinə klikləyin və ən azı bir Ad, Dil və Saat qurşağını göstərin.
İkinci addım: Agent qurun.
Kontekst istifadəçinin dedikləri ilə agentimizin nə etməli olduğu arasındakı əlaqəni əks etdirir. Bizim vəziyyətimizdə hava proqnozu halını nəzərdən keçirin:
- "Kontekst" bölməsində üzərinə klikləyin. Agent artıq salamlamalar və səhvlər üçün “kontekstləri” konfiqurasiya edib.
- "Kontekst" üçün bir ad göstərin - sizin və həmkarlarınız üçün başa düşülən istənilən ad.
- “İstifadəçi deyir” bölməsində istifadəçinizin verə biləcəyi suallardan nümunələr təqdim edin. Söhbət havadan getdiyimiz üçün insan zamana və məkana görə sual verə bilər - gəlin bunu nəzərə alaq. Parametrlərdə nə qədər çox nümunə təqdim etsəniz, agent bir o qədər dəqiq işləyəcək. Ekran görüntüsündə bəzi nümunələr verdim:
Son nümunədə "sabah" və "Nijni Tagil" sözləri müxtəlif rənglərlə vurğulanır - beləliklə sözlər varlıqlarla əlaqələndirilir ( Müəssisələr) (bizim vəziyyətimizdə sistem obyektləri). Bu parametrlərdən istifadə edərək agent havanın hansı şəhərdə və hansı tarixdə yoxlanılması lazım olduğunu “başa düşəcək”.
Daha bir neçə nümunə əlavə edin və “SAVE” düyməsini basın.
Test edək!
Sadə suallardan istifadə edərək agentin fəaliyyətini yoxlayaq, məsələn, “Çərşənbə günü Permdə hava”:
Bütün bu müddət ərzində ekranın yuxarı sağ hissəsində "İndi cəhd edin" yazısı göründü - bu sahəyə yazın və ya hava haqqında sadə bir sual verin və "Enter" düyməsini basın.
Biz hələ avtomatik cavab konfiqurasiya etməmişik, lakin agent artıq bəzi parametrləri təyin etməyi öyrənib! NƏYƏT bölməsi, agentin “rəyinə” görə, istifadəçinin hava ilə maraqlandığını (qurduğumuz “kontekst”), PARAMETRE isə müvafiq dəyişənlərdə şəhərin tarixini və adını göstərir.
Avtomatik cavablar əlavə edin
Gəlin agentimizi daha danışan edək! Xarici mənbələrdən hava məlumatlarını necə alacağımızı öyrənənə qədər cavab olaraq sadə ifadələr əlavə edəcəyik.
“Cavab” bölməsinə keçin və “İstifadəçi Cavabları”nı doldurduğunuz kimi sadə cavabları daxil edin:
Gördüyünüz kimi, cavablarda müəyyən edilmiş obyektlərə keçidlərdən istifadə edə bilərsiniz, $ yazmağa başlayın - və interfeys sizə müəyyən bir dəyişən seçməyi təklif edəcək.
Cavab yaradan zaman agent müəyyən qurumların sayını nəzərə alır və kifayət qədər məlumat olmayan cavablardan istifadə etmir. Məsələn, şəhər göstərilmədən sual üçün agent ikinci sətirdəki cavabdan istifadə edir.
Parametrləri yadda saxlayın və yenidən sınaqdan keçirin:
İndi cavabımız da var!
Üçüncü addım: Xarici xidmət əlavə edin.
Agentimiz artıq istifadəçinin hansı hallarda, hansı tarixdə və hansı şəhərdə havanı bilmək istədiyini “başa düşür”. İndi yalnız bu məlumatları uyğun bir xidmətdən əldə etmək və agentə ötürmək qalır. Bunu etmək üçün JS-də bir neçə skript yazmalı və onları bulud xidmətində, bizim vəziyyətimizdə Google Bulud Layihəsində yerləşdirməlisiniz.
Başlanğıc JS faylı yaradın
Başlamaq üçün layihənizin adı ilə bir kataloq yaradın və keçin:
Linux və ya Mac OS X:
mkdir ~/
cd ~/
mkdir %HOMEPATH%
CD %HOMEPATH%
İndi aşağıdakı məzmunlu index.js faylı yaradın:
index.js kodu
/* * HTTP Bulud funksiyası. * * @param (Obyekt) Cloud Function sorğu kontekstini tələb edir. * @param (Obyekt) res Cloud Function cavab konteksti. */ exports.itsm365Weather = itsm365Weather funksiyası (req, res) ( cavab = "Bu, veb-qancanızdan nümunə cavabdır!" //Onun işlək olduğunu göstərmək üçün veb-qancadan defolt cavab res.setHeader("Məzmun Növü", "application/json"); //tətbiq/json MIME növü tələb olunur res.send(JSON.stringify(("nitq": cavab, "displayText": cavab //"nitq" cavabın danışıq versiyasıdır, "displayText " vizual versiyadır)));
Google Bulud Layihəsini qurun
- Parametrləri edin “Sizdən əvvəl
başlayın” 1-dən 5-ə qədər
Konsolda işləyərək funksiyanı buludda yerləşdirin:
gcloud beta funksiyaları itsm365Weather --stage-bucket --trigger-http yerləşdirir
burada itsm365Weather funksiyanın adıdır və yaddaşın adıdır
layihə üçün məlumatlar.
Əməliyyat başa çatdıqdan sonra nəticəni http trigger URL ilə görəcəksiniz:
API.AI-də Webhook-u aktivləşdirin
- Düzgün agentdə olduğunuzdan əmin olun və sonra “ klikləyin İcra” sol gizlətmə menyusunda.
- Ekranın yuxarı sağ hissəsində Webhook-u aktivləşdirin.
- Əvvəlki addımda əldə edilmiş URL-i daxil edin.
- Dəyişikliklərinizi yadda saxlayın.
“Kontekst” parametrlərində yeni funksiyanın icrasını aktivləşdirin
- Hava proqnozu "kontekst" parametrlərinə keçin
- Bloku genişləndirin İcra səhifənin aşağı hissəsində
- "Webhookdan istifadə et" qutusunu yoxlayın
- Parametrləri yadda saxlayın və nəticəni yoxlayın:
Hava API-ni qurun
Sadəlik üçün biz WWO (World Weather Online) xidmətindən istifadə edəcəyik, burada API açarı əldə etməlisiniz (yalnız Facebook və ya Github vasitəsilə qeydiyyatdan keçmək kifayətdir).
Hava məlumatı əldə etmək üçün API açarını daxil etməyi unutmayın, başlanğıc JS faylındakı kodu yeniləyin:
Hava proqnozu xidməti üçün mənbə kodu
// Müəlliflik hüququ 2017, Google, Inc. // Apache Lisenziyası, Versiya 2.0 ("Lisenziya") əsasında lisenziyalaşdırılıb; // Lisenziyaya uyğun olaraq bu fayldan istifadə edə bilməzsiniz. // Siz Lisenziyanın surətini // // http://www.apache.org/licenses/LICENSE-2.0/////////////////////////////////////// http://www.apache.org/licenses/LICENSE-2.0 ünvanından əldə edə bilərsiniz. Lisenziya "OLDUĞU KİMİ" ƏSAS əsasında paylanır, // HƏR QARANTİYA VƏ YA ŞƏRTLƏR OLMADAN, açıq və ya nəzərdə tutulmuşdur. // Lisenziyaya əsasən icazələri və // məhdudiyyətləri idarə edən xüsusi dil üçün Lisenziyaya baxın. "ciddi istifadə edin"; const http = tələb ("http"); const host = "api.worldweatheronline.com"; const wwoApiKey = "98cfb8e40ecc47c4a2f205209172608"; exports.itsm365Weather = (req, res) => ( // Sorğudan şəhər və tarixi alın, şəhər = req.body.result.parameters["geo-city"]; // şəhər tələb olunan parametrdir // Alın hava proqnozu üçün tarix (əgər varsa) let date = ""; if (req.body.result.parameters["date"]) (tarix = req.body.result.parameters["tarix"]; console.log ("Tarix: " + tarix ) // Hava API callWeatherApi(şəhər, tarix).then((çıxış) => ( // API.AI res.setHeader("Content)-a hava API-nin nəticələrini qaytarın; -Type", "application/json"); res.send(JSON.stringify(( "nitq": çıxış, "displayText": çıxış ))); )).catch((xəta) => ( // Əgər varsa səhvdir res.setHeader("Content-Type", "application/json" res.send(( "speech": error, "displayText" ))) ; funksiya callWeatherApi (şəhər, tarix) ( yeni Promise ((həll et, rədd et) qaytar) => ( // Hava icazəsi yolunu əldə etmək üçün HTTP sorğusu üçün yol yaradın = "/premium/v1/weather.ashx?format=json&num_of_days= 1" + "&q=" + encodeURIComponent(şəhər) + "&key=" + wwoApiKey + "&date=" + tarix + "&lang=ru"; console.log("API Sorğu: " + host + yol); // Hava vəziyyətini əldə etmək üçün HTTP sorğusu edin http.get((host: host, path: path), (res) => ( let body = ""; // var cavab parçaları saxlamaq üçün res.on("data", (d) => ( body += d; )); // hər bir cavab yığını res.on("end", () => ( // Bütün məlumatlar qəbul edildikdən sonra istədiyiniz məlumat üçün JSON-u təhlil edin. = JSON.parse(body) let proqnoz = cavab["data"]["weather"] let location = respond["data"]["request"]; let currentConditions = condition["lang_ru"]; ["value"] // Cavab yaradın let output = `On $(forecast["date"]) in $(location["query"]) $(currentConditions) , $(forecast["mintempC"]-dən havanın temperaturu )°C ilə $(proqnoz ["maxtempC"])°C. `; // Vədi çıxış mətni ilə həll edin console.log(output); həll (çıxış); ))) res.on("xəta", (səhv) => ( rədd (səhv); )); ))) ))) )
Funksiyanı bulud layihəsinə yenidən yerləşdirin.
Dördüncü Addım: Dialoq Filiallarının Konfiqurasiyası
İstifadəçi ilə əlaqə qurarkən, onun bizə ilk mesajda dərhal xarici xidmətdə cavab hazırlamaq üçün lazım olan bütün məlumatları təqdim edəcəyinə əmin ola bilmərik. Bizim nümunəmizdə bir proqnoz əldə etmək üçün xidmətə tarix və şəhər lazımdır. Tarix bəlli deyilsə, istifadəçinin "bu gün" mənasını verdiyini güman edə bilərik, lakin şəhər haqqında yalnız istifadəçinin özündən öyrənə bilərik.
“Məkanı” tələb olunan parametrə çevirin
"Hava Proqnozu" kontekst parametrlərini açın və lazım olduqda geo-şəhər parametrini təyin edin. Sonra "Soruşlar" sütunundakı keçiddən istifadə edərək aydınlaşdırıcı sual qurun.
Parametrləri yadda saxlayın və agentə sadə hava sualı verməklə onun davranışını sınayın:
Agent bizə aydınlaşdırıcı bir sual verdi, konsol cərəyanın parametrlərini göstərir
vəziyyətlər.
Məkan üçün qaytarma dəqiqləşdiricisi yaradın
Əvvəlki istifadəçi səyahətlərindən əldə edilən məlumatlardan istifadə etmək üçün müvafiq dəqiqləşdirmələri konfiqurasiya etməlisiniz.
“Hava proqnozu” kontekst parametrində “Çıxış kontekstini əlavə et” sahəsinə qaytarılmış “yer” dəqiqləşdirməsinin adını daxil edin və parametrləri yadda saxlayın.
Aydınlaşdırma üçün yeni kontekst yaradın
İstifadəçidən hansı şəhəri nəzərdə tutduğunu soruşmadan eyni məkan haqqında bir neçə sual verə bildiyiniz zaman rahatdır. Siz artıq təkrar sualları emal etmək üçün istifadə edə biləcəyiniz geri qaytarma kvalifikasiyasını konfiqurasiya etmisiniz.
- Bölmədə yeni kontekst yaradın Niyyətlər və ya sətirdəki işarəyə klikləyin
Niyyətlər sol açılan menyu. - Yeni konteksti “Hava Yeniləməsi” adlandırın (və ya sizin üçün mənalı olan hər hansı digər ad).
- Gələn və gedən təmizləyiciləri "yer"ə təyin edin
- İstifadəçi qeydləri əlavə edin, məsələn, "Sabah nə olacaq?"
- Aşağıdakı dəyərləri olan bir obyekt parametri əlavə edin:
- Parametr adı:
geoşəhər
- Dəyər:#location.geo-city - “Bölməsinə istifadəçi üçün cavab əlavə edin Cavab”:
- “Bağışlayın, amma mən #location.geo-city-də $date-period üçün proqnoz əldə edə bilmirəm” - İstifadəsini aktivləşdirin webhook menyuda İcra.
- Parametrləri yadda saxlayın və konsolda test edin:
Beşinci addım: Salamlaşmaq və gözlənilməz vəziyyətləri idarə etmək
Agentin əsas skeleti hazırdır, indi robotu düzəltmək yaxşı fikirdir
istifadəçini salamladı və gözlənilməz suallara necə cavab verməyi də bilirdi.
Gözlənilməz vəziyyətlər üçün standart cavablar qurun
İstifadəçi gözlənilməz sual verərsə (bizim vəziyyətimizdə hava haqqında deyil), agent gözlənilməz vəziyyətləri idarə etmək üçün kontekst əlavə edəcəkdir ( Defolt Geri Qaytarma Niyyəti):
Bu kontekstin qurulmasına keçin, lazım gələrsə cavab seçimlərinizi fərdiləşdirin.
Salamlama kontekstini qurun
Salamlama müvafiq məzmunda oxşar şəkildə fərdiləşdirilə bilər -
Defolt Xoş Gəlmə Niyyəti
Altıncı addım: Botu işə salın
Telegram botunu agentə qoşun
"İnteqrasiya" parametrlərinə keçin və bölmədə botu aktivləşdirin
"Bir kliklə inteqrasiyalar":
@botFather-dən aldığınız tokeni “Telegram token” sahəsinə köçürün və
START düyməsini basın.
Botun performansını yoxlayın
Botunuza gedin və ona bir şey yazmağa çalışın, mənim vəziyyətimdə belədir
@itsm365_weather_bot (pulsuz hava hesablarından istifadə etdim, ona görə də gündə 500 sorğudan sonra bot balqabaqa çevriləcək).
Nəticə
API.AI artıq ani messencerlərdə interaktiv interfeyslər qurmaq və sosial şəbəkələrlə çatları dəstəkləmək üçün istifadə edilə bilər. Alətin xidmətlərinizlə asanlıqla inteqrasiya oluna biləcəyini nəzərə alsaq, o, istifadəçilərinizlə ünsiyyəti avtomatlaşdırmaq üçün əlverişli bir vasitədir.
P.S. Bu mənim ilk yazımdır, konstruktiv rəy üçün təşəkkür edirəm!
Teqlər:
- api.ai
- teleqram
- teleqram botları
Telegram-da mesajların göndərilməsini necə qurmaq barədə bir neçə söz (və proqramlaşdırmaya ehtiyac yoxdur, yaxşı, mütləq deyil).
Bu məqalə üçün başqa bir bot yaratdım və API açarlarını belə gizlətməyəcəm, çünki... Mən ona yazığım gəlmir. Oxuduqca ondan istifadə edə bilərsiniz, baxmayaraq ki, sizə öz botunuzu yaratmağı və API açarlarını heç kimə verməməyi məsləhət görürəm.
Bot yaratmaq
Beləliklə, etməli olduğunuz ilk şey bir bot yaratmaqdır. Bunu etmək üçün əlaqə siyahısında @BotFather-i tapın. Bu Telegram-dan xüsusi bir botdur, botlar yaratmaq üçün lazımdır. Bu halda mən web.telegram.org saytından istifadə edirəm, rahatdır, telefonunuzdan kompüterinizə heç nə köçürməyə ehtiyac yoxdur.
@BotFather tapın və ona üç əmr göndərin: /newBot (ekran görüntüsündə olduğu kimi yazın) və yeni botun adını iki dəfə qeyd edin. Botun adının "bot" ilə bitməsi vacibdir - bunlar tələblərdir.
Bundan sonra BotFather sizə hər şeyin qaydasında olduğunu söyləyəcək və sonra sizə lazım olacaq API açarını qaytaracaq. Təcrübələr üçün hələlik açarımı götürə bilərsiniz - 515479662:AAF1wTj2Xcb3HVURbc_5DbZ9qiz4ddds9iQ.
Əlaqə
İndi əlaqə siyahınızda adla yaratdığınız botu tapın (mənim vəziyyətimdə BablofilDemoBot) və başlanğıc düyməsini klikləyin. Bu vacibdir, çünki Botun özü özünü insanlara tətbiq edə bilməz.
Bundan sonra bu linki brauzerinizdə açın
(botunuz üçün API açarını özünüzlə əvəz edin, bu kimi https://api.telegram.org/bot APIAPIAPIAPIAPI/getUpdates). Ekran görüntüsündə olduğu kimi təxminən eyni görməlisiniz - botun son fəaliyyəti - kimin qoşulduğunu, kimin nə yazdığını və s. Boşdursa, bota teleqramda bəzi cəfəngiyatlar yazın və səhifəni yeniləyin. Son məqsədiniz chat_id tapmaqdır
Tapmağınız lazım olanı vurğuladım. DİQQƏT - əgər siz mənim botumdan istifadə edirsinizsə, unutmayın ki, hər kəs ona qoşula bilər ki, başqasının chat_id-ini tapa biləsiniz - ləqəbinizin burada qeyd olunduğundan əmin olun. Daha yaxşısı, ayrıca bot əldə edin) Əks halda, bot adından hər kəs sizə yaza biləcək - API açarları hamıya məlumdur.
Mesaj göndərilir
Bu addımda siz API açarını və chat_id-i bilirsiniz. Yalnız mesaj yazmaq qalır.
Müvafiq olaraq, API, chat_id və mesaj mətnini özünüzlə əvəz edin. PING sözünü bot mesajı kimi göndərirəm.
https://api.telegram.org/bot APIAPIAPI/sendMessage?chat_id= ÇATID&mətn= MƏTN
Aaaand... Bot sizə teleqramda mesaj göndərir.
Yaxşı, indi, özünüzə və ya qrupa mesaj göndərmək istəyirsinizsə (bəli, qrupa getmək istəyirsinizsə, botu qrupa əlavə edin və yenidən chat_id əldə edin, yalnız bu dəfə qrup üçün) skriptdən istifadə edin, sonra sadəcə olaraq bu kodu istifadə edərək linki çəkin:
idxal urllib.request urllib . xahiş. urlopen(""" https://api.telegram.org/bot(API_TOKEN)/sendMessage?chat_id=(CHAT_ID)&text=(TEXT)""" .format ( API_TOKEN = "515479662:AAF1wTj2Xcb3HVURbc_5DbZ9qiz4ddds9iQ", CHAT_ID = "303964420" , TEXT = "TEST TEST TESTİ" ))
Telegram son vaxtlar hamının ağzındadır. Biz bu proqramın marketinq şöbəsinə kredit verməliyik, onlar çoxlu şırınga yaratdılar. Telegram-ın əsas xüsusiyyətlərindən biri onun güman edilən təhlükəsizliyidir - Pavel Durovun sözlərinə görə, istifadəçilər arasında bütün yazışmalar şifrələnir. Üstəlik, dünyada heç bir kəşfiyyat xidmətinin mesajlarınıza girişi olmayacaq. Ancaq bu məqalə bu barədə deyil. Bu gün Telegram-da eyni dərəcədə gözəl bir xüsusiyyət, yəni botlar haqqında danışmaq istərdim. Şəbəkənin artıq müxtəlif növ Telegram botları (məsələn, github bot) haqqında məlumatla dolu olmasından əlavə, messencer tərtibatçılar üçün öz API-sini açıb və indi hər kəs blackjack və bonuslarla öz botunu yarada bilər.
Bu yazıda Python və Django çərçivələrindən istifadə edərək onlayn bot yazmağın bir nümunəsini verəcəyəm. Yəni biz uzaq hostda işləyəcək və istifadəçilərdən əmrlər alacaq tam hüquqlu veb proqram quracağıq. Bütün mənbə kodu mənim github depomda mövcuddur.
Telegram botları ilə qarşılıqlı əlaqə prosesini təsvir edən sənədlər yerləşir. Təkəri yenidən kəşf etməmək üçün botların bütün əsas funksiyalarını - telepotu həyata keçirən yaxşı Python kitabxanası tapdım. Daha əvvəl qeyd etdiyim kimi, botumuzun istifadəçilərinə xidmət etmək üçün biz Django çərçivəsindən istifadə edərək veb proqram hazırlayacağıq.
Telegram botunu necə yaratmaq olar?
Əvvəlcə gələcək botu Telegram-da qeydiyyatdan keçirməliyik. Bu aşağıdakı kimi edilir:
- Telefonunuza və ya kompüterinizə Telegram proqramını quraşdırmalısınız. Proqramı yükləyə bilərsiniz
- Əlaqə siyahısına adı olan bir bot əlavə edin BotAta
- Düyməni basaraq botla “ünsiyyət” proseduruna başlayırıq Başlamaq. Sonra, ekran görüntüsündə olduğu kimi əmrlərin siyahısını görəcəyik.
- Yeni bir bot yaratmaq üçün əmri yerinə yetirməlisiniz /newbot və təlimatlara əməl edin. qeyd edin ki bot üçün istifadəçi adı həmişə sonunda bot sözünü ehtiva etməlidir. Məsələn, DjangoBot və ya Django_bot.
- Botumuz üçün PythonPlanetBot adını seçdim, çünki onun əsas funksiyası Python Planet vebsaytının RSS lentini təhlil etmək və istifadəçiyə ən son yazılar haqqında məlumat verməkdir :)
Botu yaratdıqdan sonra mətni olan sətirə diqqət yetirin:
HTTP API-yə daxil olmaq üçün bu nişanı istifadə edin:
Sözdə izlədi botumuzu manipulyasiya edəcəyimiz işarədir. Teleqram bot yaratmaq funksiyasına əlavə olaraq, BotFather bir sıra digər xüsusiyyətlərə də malikdir:
- Botun təsvirini verin
- Avatar qurun
- Tokeni dəyişdirin
Gəlin kodlaşdırmağa başlayaq
Bayaq qeyd etdiyim kimi, yazacağıq Django veb proqramı. Ancaq bunun lazım olmadığını qeyd etmək lazımdır. Siz müntəzəm Python skripti ilə əldə edə bilərsiniz, baxmayaraq ki, bu halda bot istifadəçilərinin yeni sorğuları üçün vaxtaşırı Telegram sorğusu keçirməli olacaqsınız (metoddan istifadə etməklə. yeniləmələri əldə edin) və təkrarlanmadan ən son məlumatları əldə etmək üçün ofsetin artırılması. Telegram-da botunuz üçün əmrlər/mesajlar almaq üçün bir-birini istisna edən iki üsul var.
- API Metod Zəngindən istifadə yeniləmələri əldə edin
- Webhook quraşdırılması
Webhook-un qurulması, kimsə bota mesaj göndərməyə başlayanda POST sorğusunun göndəriləcəyi bota xüsusi URL-in ötürülməsini nəzərdə tutur. Bot və onun istifadəçisi arasında qarşılıqlı əlaqə üçün istifadə edəcəyimiz bu seçimdir. URL-i təyin etmək üçün API metodundan istifadə etməlisiniz setWebhook. Qeyd edim ki, URL https ilə başlamalıdır, yəni etibarlı sertifikatla təhlükəsiz SSL bağlantısı olmalıdır. Telegram sizə öz imzası olan sertifikatdan istifadə etməyə imkan verir, baxmayaraq ki, bu üsul tələb edir setWebhook açıq açarı PEM formatında da ötürür (ASCII base64). Və ya onu Let's Encrypt-dən əldə edə bilərsiniz.
Haqqında ətraflı oxuyun yeniləmələri əldə edin Və setWebhook uyğun olaraq oxuna bilər və .
Beləliklə, Telegram ilə işləmək üçün python kitabxanasına qayıdaq - telepot. Hazırda onun son versiyası 6.7-dir. Onu python virtualenv virtual mühitində quraşdırın:
Pip quraşdırma telepotu
Python-da Telegram botu ilə əlaqə qurmağın ən sadə yolu aşağıdakı kimidir:
İdxal telepot nişanı = "123456" TelegramBot = telepot.Bot(token) TelegramBot.getMe() çap edin
Token dəyişəninə BotFather vasitəsilə botu yaradan zaman alınan tokenin dəyəri təyin edilir. Nəticədə, bu əmrləri yerinə yetirdikdən sonra əldə edəcəyik:
(u"istifadəçi adı": u"PythonPlanetBot", u"first_name": u"Python Planet Bot", u"id": 199266571)
Təbrik edirik! Biz bot haqqında məlumatı qaytaran ən sadə API sorğusunu getMe adlandırdıq: istifadəçi adı, id, birinci_ad.
Gəlin botu kontakt siyahımıza əlavə edək və ona ilk standart /start əmrini göndərək
Kodu işə salaq:
TelegramBot.getUpdates() [(u"mesaj": (u"tarix": 1459927254, u"mətn": u"/start", u"from": (u"istifadəçi adı": u"adilxash", u"first_name ": u"Adil", u"id": 31337), u"message_id": 1, u"chat": (u"username": u"adilxash", u"first_name": u"Adil", u" type": u"private", u"id": 7350)), u"update_id": 649179764)]
Teleqram botu ilə əlaqə prosesi HTTPS vasitəsilə baş verir; JSON məlumat ötürmək üçün istifadə olunur. Metod yeniləmələri əldə edin Yeniləmə tipli obyektlərin siyahısını/massivini qaytarır. Inside Update bir Mesaj obyektidir. Bir bot ilə standart qarşılıqlı əlaqə üçün bizi əslində Mesaj obyekti maraqlandırır, ondan bota göndərilən mətni saxlayan mətn atributunu və Telegramımızla söhbətə başlayan istifadəçi haqqında məlumatları ehtiva edən söhbət obyektini oxuyuruq. bot. GetUpdates metodunu çağırarkən ofset parametri kimi xidmət edən update_id parametri də var. Yəni update_id+1 son update_id-dən sonra alınan bütün mesajları qaytaracaq, eyni zamanda bütün əvvəlki mesajlar silinəcək.
TelegramBot.getUpdates(649179764+1) [(u"mesaj": (u"tarix": 1459928527, u"text": u"salam bro", u"from": (u"istifadəçi adı": u"adilxash", u"first_name": u"Adil", u"id": 31337), u"message_id": 13, u"chat": (u"username": u"adilxash", u"first_name": u"Adil" , u"type": u"private", u"id": 7350)), u"update_id": 649179765)]
Ən sadə Telegram botunun yazılması mərhələsində bu zənglər bizə kifayət edir. İstifadəçilərimizə xidmət etmək üçün Django tətbiqi yazmağa başlayaq.
Sadə Planet Python RSS feed təhlili funksiyası bu kimi görünür.
Teleqramların inkişafı əsasən çoxlu sayda botların - kiçik xidmət robot proqramlarının olması ilə müəyyən edilir. Onlar proqramlaşdırma ilə orta səviyyədə tanış olan istənilən istifadəçi tərəfindən yaradıla bilər. Telegram API Bot, öz botunuzu proqramlaşdırmağa imkan verən proqram interfeysidir.
API-yə Telegram botunun davranışını təyin etmək üçün nəzərdə tutulmuş obyektlər və əmrlər daxildir. İnterfeysdən istifadə edərək, Telegram-da işləyərkən botlar kimi işləməyə başlayan öz proqram kodlarınızı yarada bilərsiniz.
Nəzarətlər
Bot Telegram API-də bütün idarəetmələr JSON-da, yəni müəyyən qaydalara uyğun olaraq müəyyən edilmiş sətir kimi təqdim olunan obyektlərdir. Bu, məlumatı şəbəkə üzərindən mümkün qədər tez və ən az xərclə mübadilə etməyə imkan verir, çünki ötürülən proqram kodu deyil, mətn şəklində açar: dəyər cütləri dəstidir. Cədvəl bütün API növlərini göstərir. Obyektlərin əksəriyyəti bot əmrləri yaratmaq üçün nəzərdə tutulub. Açarlar obyektin imkanları haqqında daha geniş anlayış verəcəkdir.
ad | Təsvir | Açarlar |
---|---|---|
İstifadəçi | Telegramda istifadəçi | id ad_ad Soyad istifadəçi adı |
Söhbət | Söhbət | id növü başlıq istifadəçi adı ad_ad Soyad bütün_üzvlər_inzibatçılardır |
Mesaj | Mesaj | message_id -dan Tarix söhbət edin irəli_dən irəli_tarix mesaja_cavab mətn qurumlar audio sənəd Şəkil stiker video səs başlıq əlaqə saxlayın yer yer yeni_chat_üzvü sol_chat_üzvü yeni_chat_başlığı yeni_chat_foto chat_fotosunu sil qrup_chat_yaradıldı superqrup_chat_yaradıldı kanal_chat_yaradıldı chat_id-ə köçürün chat_id-dən_miqrasiya edin bərkidilmiş_mesaj |
MessageEntity | Mətn mesajında ayrı bir varlıq (hashtag, keçid və s.) | növü uzunluq url ofset |
Foto ölçüsü | Verilmiş ölçülü şəkil və ya foto, fayl və ya stikerin önizləməsi | file_id eni hündürlük fayl_ölçüsü |
Audio | Səs yazısı | file_id müddəti ifaçı başlıq mime_növü fayl_ölçüsü |
Sənəd | Şəkil, səs yazısı və ya səs yazısı olmayan hər hansı bir fayl | file_id baş barmaq fayl adı mime_növü fayl_ölçüsü |
Stiker | Stiker | file_id eni hündürlük baş barmaq fayl_ölçüsü |
Video | Video çəkiliş | file_id eni hündürlük müddəti baş barmaq mime_növü fayl_ölçüsü |
Səs | Səsli mesaj | file_id müddəti mime_növü fayl_ölçüsü |
Əlaqə | Telefon əlaqəsi | telefon nömrəsi ad_ad Soyad İstifadəçi adı |
Məkan | Xəritədə bir nöqtə | uzunluq enlik |
Məkan | Xəritədə obyekt | yer başlıq ünvanı foursquare_id |
UserProfile Photos | İstifadəçi profili şəkli | ümumi_sayı fotolar |
Fayl | Fayl endirməyə hazırdır | file_id fayl_ölçüsü fayl_yolu |
ReplyKeyboard Markup | Cavab seçimi ilə klaviatura | klaviatura ölçüsünü dəyişdirin birdəfəlik_klaviatura seçici |
Klaviatura düyməsi | Cavab vermək üçün klaviatura düyməsi | mətn sorğu_əlaqə sorğu_yeri |
ReplyKeyboardHide | Bot klaviaturasını standart Telegram klaviaturası ilə əvəz edir | klaviaturanı_gizlə seçici |
Inline Keyboard Markup | Mesajın altında görünən daxili klaviatura | inline_klaviatura |
Daxili Klaviatura Düyməsi | Daxili klaviaturada bir düymə | mətn url geri zəng_data keçid_inline_sorğu keçid_inline_query_current_chat geri zəng oyunu |
Geri çağırış sorğusu | Göstərilən geri çağırış_data parametri ilə daxili düymə üçün daxil olan rəy sorğusu | id -dan mesaj inline_message_id data |
ForceReply | İstifadəçi hərəkətlərini təqlid edir: mesajı seçmək və “Cavab vermək” düyməsini sıxmaq | məcbur_cavab seçici |
ResponseParameters | Sorğunun niyə uğurla tamamlanmadığını bildirir | chat_id-ə köçürün yenidən cəhd edin |
Messenger tərəfindən göndərilən nəticə sətirləri eyni API obyektləri kimi təmsil olunur.
Mesajlar sorğu şəklində mübadilə edilir. Aşağıdakı cədvəldə onlardan bəzilərinin nümunələri göstərilir.
Bütün üsullar (və onların çoxu var) qruplara bölünür:
- Yenilikləri və məlumatı alın.
- Söhbət işi.
- Müxtəlif əşyaların göndərilməsi.
- Stikerlərlə işləmək.
- Mesajları yeniləyin.
- Daxili rejim.
- Ödəniş funksionallığı.
- Oyunlar üçün.
Telegram Bot API-nin rus dilində tam sənədləri hələ mövcud deyil. Bununla belə, Google Chrome brauzerindəki standart tərcümə işi mükəmməl yerinə yetirir.
Proqramlaşdırma dilləri
Telegram API bir çox proqramlaşdırma dilləri tərəfindən dəstəklənir. Bu, yaradıcıya seçim imkanı verir.
JavaScript həvəskarları Node.js Telegram Bot API-dən istifadə edə bilərlər. Burada sizə təkcə dil bilikləri deyil, həm də müştəri dilini tam hüquqlu server interfeysinə çevirən bu çərçivəni idarə etmək bacarığı lazımdır.
Telegram Bot API-dən istifadə edərək botlar yazmaq üçün ən populyarlardan biri PHP-dir. Bu dil əvvəlcə server tərəfində veb proqramlar yaratmaq üçün nəzərdə tutulmuşdu. Sadə, məntiqlidir və xüsusi olaraq veb mühiti üçün ixtisaslaşmışdır.
Python-da Telegram Bot API tez-tez istifadə olunur. Bu dil minimalistdir və öyrənmək olduqca asandır. Performansına görə çox məşhurdur.
Klassik C++ dilində Telegram Bot API-nin istifadəsidir. Dili sadə adlandırmaq olmaz, lakin yuxarıda sadalanan bütün digər dillərin yaradıldığı əsasdır. Müvafiq olaraq, bura xüsusi bir ixtisas daxil deyil. Alətlər istənilən proqram yaratmağa imkan verir.
İstifadə nümunəsi
Obyektlərə əlavə olaraq, API-də mesajlar, fayl, foto stikerlər, redaktə etmək və daha çox şey göndərməyə imkan verən bir sıra üsullar var. Bütün bu əmrləri rəsmi veb saytında API təsvirində tapa bilərsiniz.
Telegram-da @Botfather yaratmaq üçün xüsusi xidmət var. Oraya daxil olun və yeni robotun yaradıldığı bir sıra əmrlərə baxın. Başlamaq üçün /newbot əmrini yazın. Sonra, istifadəçi adını və başlığı ardıcıl olaraq daxil edin. Sonuncu həmişə "bot" ilə bitir. Onlar sizə token (identifikator) göndərdikdən sonra yeni bot yaradılır. Avtorizasiya bir token vasitəsilə həyata keçirilir. Proqramı Telegram-da işə salmaq üçün beyninizi tapın və "Başlat" düyməsini basın. Bu, əvvəlcədən təyin edilmiş / start əmrini işlədəcək. Həmçinin, /parametrlər və /help əmrləri hər robot üçün qorunur.
Bütün sorğular belə görünür:
https://api.telegram.org/bot
Ərizə təqdim etməyin 4 yolu var:
- URL-də sorğu
- proqram/x-www-form-urlencoded
- proqram/json (faylları yükləmək üçün uyğun deyil)
- çoxhissəli/forma-data (faylları yükləmək üçün)
Həm GET, həm də POST sorğuları mövcuddur.
API əmrlərini sınamağın ən asan yolu brauzerinizin ünvan çubuğundadır. Veb versiyada və ya mobil cihazdan botunuza daxil olun. Sonra brauzerinizdə əmr yazın:
https://api.telegram.org/bot507226896:AAGT_fsEfg1milOkqbNp-VolQDJ0tGjaPvD7/getUpdates
Nəticədə pəncərədə JSON sətri görünəcək
("ok":doğru,"nəticə":[("update_id":231886689,
"message":("message_id":3,"from":("id":391911270,"is_bot":false,"first_name":"Irina","last_name":"12345678","dil_kodu":"ru "),,"chat":("id":391911270,"ad_ad":"İrina","soyad":"12345678","type":"özəl"),"tarix":1514900431,"mətn": " \u044b\u0443\u0442\u0430\u043b\u043e\u0430\u043c\u0440"))])
Parametr chat":("id söhbət identifikatorudur. Sonra xətti yazın:
https://api.telegram.org/ bot507226896:AAGT_fsEfg1milOkqbNp-VolQDJ0tGjaPvD7/sendMessage?chat_id=391911270&text=Salam
Brauzerdə bir xətt görünəcək
("ok":true,"nəticə":("message_id":4,"from":("id":507226896,"is_bot":true,"first_name":"Anna","username":"Annatuola_bot" ),"chat":("id":391911270,"ad_ad":"İrina","soyad":"12345678","type":"private"),"tarix":1514900499,"text":"Salam "))
Və Telegram çatında siz yaradılmış robotdan salam görəcəksiniz.
Gördüyünüz kimi, sıfırdan yeni Telegram elementi yaratmaq çətin deyil. Çətinliklər proqramlaşdırma anında başlayır, lakin bu barədə digər məqalələrdə danışacağıq.