Рецоммендед, 2024

Избор Уредника

Како створити Фацебоок Мессенгер Бот (Водич)

Функција „мессенгер ботова“ на Фацебооку није ништа ново, а већ постоји много сјајних ботова. Међутим, ресурси који се тичу тачно како да направите свој сопствени бот су оскудни, и недостају им објашњења за људе који су нови у Фацебоок Грапх АПИ-ју. Мессенгер ботови сада захтевају и да користите ССЛ безбедносни вебхоок цаллбацк УРЛ (више о томе касније), а постављање ССЛ-а није за свакога, а такође кошта и новац.

У овом чланку, провест ћу вас кроз цијели процес креирања једноставног ботова на Фацебооку, јер је властита документација Фацебоока прилично слабо објашњена. Поставићемо апликацију у облаку која користи хттпс протокол, кодирати бот у Ноде.јс (који је јавасцрипт, језик на страни сервера), користити гит да би гурнуо код у цлоуд апликацију и тестирао га на Фацебоок Мессенгер.

Сетуп Бот

Потребан вам је Ноде инсталиран на вашем лаптопу. Ако то не учините, идите на Ноде веб страницу да бисте је преузели и инсталирали.

Када завршите, можете наставити са подешавањем за бот. Пратите следеће кораке:

1. Покрените терминал.

2. Потребан вам је посебан директориј за чување кода.

  • Направите нови директоријум
    mkdir testbot
  • Промените радни директоријум у директоријум који сте управо креирали
    cd testbot

3. Затим, иницијализујте апликацију Ноде.
npm init

  • Од вас ће се тражити да унесете информације о вашој апликацији, само користите задане вредности притиском на Ентер за све.

4. Инсталирајте пакете
npm install express body-parser request --save

  • Команда ће се покренути и дати нека упозорења; игноришите их.

5. У Финдеру, отворите директоријум „ тестбот “ који сте креирали и пронађите датотеку под називом „ пацкаге.јсон “; отворите ово у уређивачу као што је Сублиме Тект.

6. У овом фајлу морамо да додамо линију
"start": "node index.js"

  • Не заборавите да додате “, ” на крају претходне линије.

7. Затим креирајте нову датотеку у Сублиме Тект и ставите је у следећи код:

[јс]

вар екпресс = рекуире ('екпресс');
вар бодиПарсер = рекуире ('боди-парсер');
вар захтев = захтевај ('захтев');
вар апп = екпресс ();

апп.усе (бодиПарсер.урленцодед ({проширено: фалсе}));
апп.усе (бодиПарсер.јсон ());
апп.листен ((процесс.енв.ПОРТ || 3000));
апп.гет ('/', функција (рек, рес) {
рес.сенд ('Ово је ТестБот сервер');
});
апп.гет ('/ вебхоок', функција (рек, рес) {
иф (рек.куери ['хуб.верифи_токен'] === 'тестбот_верифи_токен') {
рес.сенд (рек.куери ['хуб.цхалленге']);
} елсе {
рес.сенд ('Неважећи токен верификације');
}
});

[/ јс]

Сачувајте ову датотеку као индек.јс

Напомена: У реду 13, вредност 'хуб.верифи_токен' је постављена као ' тестбот_верифи_токен', запамтите ову вредност као што ће се користити приликом креирања вебхоок-а на Фацебоок-у.

Креирајте Гит спремиште

Сада када смо подесили повратну обраду нашег бот-а, морамо гурнути код у Хероку. За то нам је потребно да направимо гит репозиториј у нашем директоријуму.

Напомена: “гит” је систем контроле верзија за датотеке и софтверски код. Више о томе можете прочитати на Википедији.

Креирање гит репозиторијума је једноставно и траје само неколико Терминал команди.

Напомена: Проверите да ли се налазите у директоријуму „ тестбот “ на терминалу. То можете урадити тако што ћете pwd команду pwd у терминал.

Пратите ове кораке да бисте креирали гит спремиште:

1. git init

2. git add .

3. git commit -m "Register Facebook Webhook"

Сетуп Хероку

Пре него што идемо на странице девелопера на Фацебооку, потребан нам је УРЛ за повратни позив са којим Фацебоок може да разговара. Овај УРЛ треба да користи хттпс протокол, што значи да морамо да инсталирамо ССЛ сертификат на нашем веб сајту; али, ово је почетнички водич за ботове на Фацебооку, тако да не компликујемо ствари. Користићемо Хероку да применимо наш код. Хероку вам даје хттпс УРЛ за ваше апликације и имате бесплатан план који задовољава наше (веома основне) захтеве.

Идите на Хероку веб страницу и регистрирајте се.

Напомена: У пољу које гласи “Изаберите ваш примарни развојни језик”, користите “Ја користим други језик”.

Када завршите с тим, инсталирајте Хероку тоолбелт за ваш ОС (Мац, за мене) и инсталирајте га. Ово ће вам омогућити приступ Хероку-у на вашем терминалу (или командном реду, на Виндовс-у).

Затим ћемо креирати апликацију на Хероку, која ће држати цијели код за нашег бота. Пратите следеће кораке:

1. Покрените терминал

2. Упишите heroku login

  • Од вас ће бити затражено да унесете своју е-пошту и лозинку.
  • Откуцајте е-пошту, притисните Ентер; затим упишите своју лозинку, притисните Ентер.
  • Бићете пријављени на хероку

3. Упишите heroku create

  • Ово ће створити апликацију на Хероку и пружити вам хипервезу. Имајте на уму да веза користи хттпс протокол. Полако, зар не?

4. Сада можете гурнути вашу апликацијску шифру у Хероку
git push heroku master

5. Када се то уради, ваша апликација је у основи жива, а можете да посетите линк у вашем претраживачу да бисте проверили да ли све ради добро. Требало би да отвори веб страницу која каже " Ово је ТестБот сервер ".

Фацебоок Сетуп

Време је да повежемо наш бот са Фацебооком! Мораћете да креирате нову Фацебоок страницу или да користите постојећу коју поседујете. Показаћу вам како да наставите са креирањем нове Фацебоок странице.

1. Идите на Фацебоок и креирајте нову страницу.

  • Можете креирати страницу у којој год категорији желите. Одлучио сам се за компанију / организацију, без посебног разлога.

2. Следећи кораци које Фацебоок показује су опционални и могу се прескочити.

3. Затим пређите на Веб локацију програмера на Фацебооку.

  • На врху десно, поставите миша на " Моје апликације ", а затим кликните на " Додај нову апликацију " из падајућег менија.

  • Кликните на “ основно подешавање ” када вас Фацебоок затражи да изаберете платформу.

4. Попуните податке за име апликације и адресу е-поште за контакт.

  • Изаберите " Аппс фор Пагес " у категорији.
  • Кликните на “ Цреате Апп ИД ”.

5. Бит ћете одведени на надзорну плочу за своју апликацију. На бочној траци идите на “ + Адд Продуцтс ” и одаберите “ Мессенгер ” кликом на “ Гет Стартед ” дугме.

6. Изаберите „ Подешавање Вебхоокс “.

7. Попуните обавезна поља, замењујући „УРЛ за повратни позив“ са УРЛ-ом Хероку апликације, Потврдите Токен са токеном који се користи у датотеци индек.јс и изаберите следећа поља за претплату:

  • мессаге_деливериес
  • поруке
  • мессаге_оптинс
  • мессагинг_постбацкс

Напомена: Уверите се да сте додали/ вебхоок ” на Цаллбацк УРЛ тако да индек.јс изврши тражену функцију када Фацебоок покуша да пингује УРЛ, може да провери “Верифи Токен”.

8. Кликните на " Верифи анд Саве ".

9. У одељку „ Генерација токена “, кликните на „ Изабери страницу “ и изаберите страницу коју сте раније направили.

Ово ће генерисати " Токен приступа страници ", сачувати га негде; требат ће вам касније.

10. Затим ћете морати да унесете ПОСТ упит у своју апликацију, користећи токен за приступ страници генерисан у последњем кораку. То се лако може урадити на терминалу. Само покрените следећу команду, замењујући ПАГЕ_АЦЦЕСС_ТОКЕН са ознаком приступа страници коју сте генерисали .

цурл -Кс ПОСТ “//грапх.фацебоок.цом/в2.6/ме/субсцрибед_аппс?аццесс_токен=ПАГЕ_АЦЦЕСС_ТОКЕН”

Требало би да добијете одговор " успеха " на терминалу.

Више Хероку Сетуп

Да, још нисмо завршили. Ни близу.

1. Идите на Хероку веб страницу и пријавите се са својом е-маил адресом.

2. Пронађите вашу апликацију у “контролној табли” и кликните на њу.

3. Идите на картицу Сеттингс (Поставке).

4. Кликните на " Ревеал Цонфиг Варс "

5. Додајте ПАГЕ_АЦЦЕСС_ТОКЕН као „ цонфиг вар “ и кликните „ Адд “.

Кодирање стварног бот-а

Сада када смо завршили с радом, можемо се усредоточити на оно што је заиста важно: натерати бот да одговори на поруке. За почетак ћемо дизајнирати бот који једноставно одзвања поруке које прима. Како се испоставило, овај једноставан задатак захтијева значајан дио кода за функционирање.

1. Кодирање слушача порука

Пре него што бот може да понови поруку, мора да буде у стању да слуша поруке. Урадимо то прво.

У датотеци индек.јс додајте сљедећи код:

[јс]

апп.пост ('/ вебхоок', функција (рек, рес) {
вар евентс = рек.боди.ентри [0].
за (и = 0; и <евентс.ленгтх; и ++) {
вар евент = догађаји [и];
ако (евент.мессаге && евент.мессаге.тект) {
сендМессаге (евент.сендер.ид, {тект: "Ецхо:" + евент.мессаге.тект});
}
}
рес.сендСтатус (200);
});

[/ јс]

Оно што ова функција ради јесте да проверава примљене поруке, а затим проверава да ли у поруци има текста. Ако пронађе текст у примљеној поруци, он позива функцију сендМессаге (приказано касније), прослеђујући ИД пошиљаоца и текст за слање. Важно је разумети следеће вредности и шта они значе:

  • евент.мессаге.тект је текст примљен у поруци. На пример, ако неко пошаље поруку "Хелло" нашем боту, вредност евент.мессаге.тект ће бити "Хелло".
  • евент.сендер.ид је ид особе која је послала поруку боту. Ово је потребно да би бот знао коме треба одговорити.

2. Кодирање функције сендМессаге

Омогућава кодирање функције “сендМессаге”, сада.

[јс]

функција сендМессаге (рецеиверИд, мессаге) {
захтев({
урл: '//грапх.фацебоок.цом/в2.6/ме/мессагес',
кс: {аццесс_токен: процесс.енв.ПАГЕ_АЦЦЕСС_ТОКЕН},
метода: 'ПОСТ',
јсон: {
прималац: {ид: рецеиверИд},
порука: порука,
}
}, функција (грешка, одговор, тело) {
ако (грешка) {
цонсоле.лог ('Грешка при слању поруке:', грешка);
} друго ако (респонсе.боди.еррор) {
цонсоле.лог ('Еррор:', респонсе.боди.еррор);
}
});
};

[/ јс]

Функција “сендМессаге” узима два параметра:

  • рецеиверИд
  • поруку

РеципијентИд је потребан да би се порука могла адресирати на исправног корисника.

Порука је стварни текст који треба послати у одговору.

3. Гурање измена у Хероку

Ако сте завршили горе наведене кораке, ваш бот би требао бити у могућности да понови повратни текст. Али прво, морате да унесете измене у апликацију која је хостована на Хероку. Да бисте то урадили, следите доле наведене кораке:

1. Покрените терминал.

2. Промените директоријум у ваш тестбот директоријум
цд тестбот

3. Урадите следеће кораке:

  • гит адд.
  • Напомена: Постоји "." На крају "гит адд"
  • гит цоммит -м “Прва предаја”
  • гит пусх хероку мастер

4. Сада пошаљите поруку на своју страницу, а бот ће вам поновити поруку.

Условни одговори ака Макинг тхе Бот Смартер

Можемо користити текстуално подударање да бисмо омогућили нашем боту на Фацебооку да реагује према одређеним посебним кључним ријечима.

Да бисмо то постигли, морамо додати још једну функцију. Назвао сам га "цондитионалРеспонсес", али можете изабрати које год име желите.

1. Кодирање функције цондитионалРеспонсес

[јс]

функција цондитионалРеспонсес (рецеиверИд, тект) {
тект = тект || "";

вар вхат = тект.матцх (/ вхат / ги); // проверава да ли текст садржи текст "вхат"; игноре цасе
варГадгет-Инфо.цом = тект.матцх (/ беебом / ги); // проверава да ли текст садржи текст "беебом"; игноре цасе
вар вхо = тект.матцх (/ вхо / ги); // проверава да ли текст садржи текст "вхо"; игноре цасе
вар иоу = тект.матцх (/ ви / ги); // проверава да ли текст садржи низ "иоу"; игноре цасе

// ако текст садржи и "шта" и "беебом", урадите следеће:

иф (вхат! = нулл &&; Гадгет-Инфо.цом! = нулл) {
мессаге = {
текст: "Беебом је сајт који нуди техничке ресурсе. Добродошли."
}
сендМессаге (рецеиверИд, мессаге);
ретурн труе;
}

// ако текст садржи и "ко" и "ви", урадите ово:
ако (ко! = нулл && иоу! = нулл) {
мессаге = {
текст: "Замољен сам да не расправљам о свом идентитету на интернету."
}
сендМессаге (рецеиверИд, мессаге);
ретурн труе;
}

// ако се ништа не подудара, вратите фалсе да бисте наставили извршавање унутрашње функције.
ретурн фалсе;
};

[/ јс]

У редовима од 4 до 7 дефинисали смо варијабле које зависе од тога да ли добијени низ одговара одређеним речима. Најбољи део о коришћењу “тект.матцх ()” је да користи регуларне изразе (обично се назива регек, прочитајте више овде.). То је добро за нас, јер то значи да све док се чак и дио ријечи у примљеном тексту подудара с било којом од ријечи које смо споменули у тект.матцх (), варијабла неће бити нулл. То значи да ако је примљена порука “Шта је Беебом?”, “Вар вхат” и “вар беебом” неће бити нула, јер ријеч “Шта” садржи ријеч “шта”. Тако смо спашени од стварања додатних изјава за сваку варијацију у којој би неко могао да каже „Шта“.

2. Уређивање слушача порука

Такође морамо да уредимо и слушалицу порука коју смо кодирали, како бисмо се уверили да ће покушати да усклади примљени текст са функцијом "цондитионалРеспонсес".

[јс]

апп.пост ('/ вебхоок', функција (рек, рес) {
вар евентс = рек.боди.ентри [0].
за (и = 0; и <евентс.ленгтх; и ++) {
вар евент = догађаји [и];
ако (евент.мессаге && евент.мессаге.тект) {

// прво покушајте да проверите да ли је примљена порука квалификована за условни одговор.
иф (! цондитионалРеспонсес (евент.сендер.ид, евент.мессаге.тект)) {

// ако не, једноставно ецхо примљену поруку натраг пошиљатељу.
сендМессаге (евент.сендер.ид, {тект: "Ецхо:" + евент.мессаге.тект});
}
}
}
рес.сендСтатус (200);
});

[/ јс]

Промене у слушаоцу можда не изгледају веома драстично, али њихови ефекти су сигурни. Сада, слушалац прво покушава да одговори са условним одговорима, и ако не постоји валидан услов за примљену поруку, он једноставно одзвања поруку назад кориснику.

3. Гурање измена у Хероку

Пре него што можете испробати нове функције, морат ћете гурнути ажурирани код у апликацију која се налази на Хероку. Пратите доле наведене кораке:

1. Покрените терминал.

2. Промените директоријум у ваш тестбот директоријум
цд тестбот

3. Урадите следеће кораке:

  • гит адд.
  • Напомена: Постоји "." На крају "гит адд"
  • гит цоммит -м „Додавање условних способности“
  • гит пусх хероку мастер

4. Сада пошаљите поруку на своју страницу, а бот ће вам поновити поруку.

Још више функционалности

Наш бот сада одговара на мали скуп команди у лијепим, добро структурираним одговорима. Али то још увијек није јако корисно. Направимо још неких измена у коду да би наш бот био “ функционалнији ” софтвер. Обнављамо много функција и додајемо још пар ствари, па се узбудите.

1. Уређивање слушача порука

Наша слушатељица порука, у овој фази, ради само у реду. Међутим, није баш лепо форматиран и ако наставимо да повећавамо угнеждене тврдње да бисмо додали додатне „ провере стања “, брзо ће постати ружно гледати, тешко разумети и спорије на извршењу. Не желимо то, зар не? Направимо неке промјене.

Напомена: У слушачу поруке налази се линија кода која чита “рес.сендСтатус (200)”, ова линија шаље коду статуса 200 на Фацебоок, говорећи му да је функција успјешно извршена. Према документацији Фацебоока, Фацебоок чека максимално 20 секунди да би добио 200 статус, пре него што одлучи да порука није прошла и зауставља извршење кода.

Наш нови слушалац порука изгледа овако. Користимо команду “ рес.сендСтатус (200) ” да зауставимо извршавање функције чим се услов упари и изврши.

[јс]

апп.пост ('/ вебхоок', функција (рек, рес) {
вар евентс = рек.боди.ентри [0].
за (и = 0; и <евентс.ленгтх; и ++) {
вар евент = догађаји [и];
ако (евент.мессаге && евент.мессаге.тект) {

// прво проверите текст поруке против услова интроРеспонсе
иф (интроРеспонсе (евент.сендер.ид, евент.мессаге.тект))
рес.сендСтатус (200);
}

// због недостатка бољег имена, назвао сам овај невРеспонсе: п; проверите следеће
иначе ако (невРеспонсе (евент.сендер.ид, евент.мессаге.тект)) {
рес.сендСтатус (200);
}

// елсе, само поновите оригиналну поруку
елсе {
// замени ецхо са валидном листом команди
сендМессаге (евент.сендер.ид, {тект: "Ецхо:" + евент.мессаге.тект});
}
}
}
рес.сендСтатус (200);
});

[/ јс]

2. Кодирање функције невРеспонсе

Наш слушалац порука сада проверава текст поруке на скуп услова у “невРеспонсе”, али прво, морамо да кодирамо функцију невРеспонсе. Користићемо ову функцију да бисмо проверили да ли је корисник тражио сугестије за чланке из сајтаГадгет-Инфо.цом, претражити појам упита на веб-локацији и представити везу кориснику. Још једном ћемо користити регуларне изразе за повезивање текста са одређеним кључним ријечима.

[јс]

фунцтион невРеспонсе (рецеиверИд, тект) {
тект = тект || "";
вар суггест = тект.матцх (/ предложи / ги);
вар рандом = тект.матцх (/ рандом / ги);
вар артицле = тект.матцх (/ артицле / ги);
вар ипхоне = тект.матцх (/ ипхоне / ги);
вар андроид = тект.матцх (/ андроид / ги);
вар мац = тект.матцх (/ мац / ги);
вар бровсер = тект.матцх (/ бровсер / ги);
вар впн = тект.матцх (/ впн / ги);

// провјерите да ли корисник уопће тражи приједлоге за чланак
иф (предложите! = нулл && артицле! = нулл) {
вар куери = "";
// ако се постављају предлози за чланке, проверите тему коју корисник тражи
иф (андроид! = нулл) {
куери = "Андроид";
} елсе иф (мац! = нулл) {
куери = "Мац";
} друго ако (ипхоне! = нулл) {
куери = "иПхоне";
} елсе иф (бровсер! = нулл) {
куери = "Прегледник";
} друго ако (впн! = нулл) {
куери = "ВПН";
}
сендБуттонМессаге (рецеиверИд, куери);
ретурн труе
}
ретурн фалсе;
};

[/ јс]

Користимо другу прилагођену функцију названу “сендБуттонМессаге” за слање поруке у случају да корисник тражи приједлоге за чланак. Направићемо ово следеће.

3. Кодирање функције сендБуттонМессаге

Функција сендБуттонМессаге узима два параметра, ИД примаоца и упит. ИД примаоца се користи за идентификацију корисника коме се порука мора послати, а упит се користи за идентификацију теме на којој корисник жели приједлоге за чланак.

[јс]

фунцтион сендБуттонМессаге (рецеиверИд, куери) {
вар мессагеДата = {
прималац: {
ид: рецеиверИд
},
порука: {
прилог: {
упишите: "темплате",
терет: {
темплате_типе: "дугме",
текст: "Ово је оно што сам пронашао за" + упит,
дугмад: [{
упишите: "веб_урл",
урл: "//ввв.беебом.цом/?с="+куери,
титле: "Беебом:" + упит
}]
}
}
}
};

цаллСендАПИ (порукаДата);
}

[/ јс]

Још једном користимо прилагођену функцију; овај пут да пошаље последњу поруку, са линковима чланака, кориснику. Функција је, на много начина, слична функцији "сендМессаге" коју смо раније кодирали, али је више генеричка у начину на који узима податке о поруци, што нам одговара, јер се подаци наших порука мењају са упитом који корисник направи.

4. Кодирање ЦаллСендАПИ функције

Функција “цаллСендАПИ” узима један параметар, “мессагеДата” . Овај параметар садржи целокупне податке о поруци, правилно форматиране према правилима Фацебоок-а, тако да га корисник може правилно приказати.

[јс]

фунцтион цаллСендАПИ (мессагеДата) {
захтев({
ури: '//грапх.фацебоок.цом/в2.6/ме/мессагес',
кс: {аццесс_токен: процесс.енв.ПАГЕ_АЦЦЕСС_ТОКЕН},
метода: 'ПОСТ',
јсон: мессагеДата

}, функција (грешка, одговор, тело) {
ако (! еррор && респонсе.статусЦоде == 200) {
вар рецеивеИд = боди.реципиент_ид;
вар мессагеИд = боди.мессаге_ид;

цонсоле.лог ("Успешно послата генеричка порука са ид% с примаоцу% с",
мессагеИд, рецеиверИд);
} елсе {
цонсоле.еррор ("Није могуће послати поруку.");
цонсоле.еррор (одговор);
цонсоле.еррор (грешка);
}
});
}

[/ јс]

5. Гурање Промене у Хероку

Ми смо на последњем кораку у прављењу нашег унапредјеног бота. Само требамо гурнути све промјене кода у Хероку. Процес је исти као и раније, а приказан је у наставку:

1. Покрените терминал.

2. Промените директоријум у директоријум тестбот .
цд тестбот

3. Урадите следеће:

  • гит адд.
  • Напомена: На крају те команде постоји “.” .
  • гит цоммит -м "побољшање провјере стања и форматирање"
  • гит пусх хероку мастер

4. Сада пошаљите поруку као што је “Предложите чланак на Андроиду” или “Беебом, предложите ми било који чланак на тему Андроид”; и бот ће послати лепо форматирану поруку са линком на који можете да додирнете да бисте отворили чланке везане за ваш упит.

Дубље

Сада када знате како да почнете са развијањем Фацебоок мессенгер ботова, прођите кроз Фацебоок документацију о томе како да развијете ботове за Фацебоок поруке. Док документација није добра за почетнике, ви више нисте почетник. Требало би да погледате званичну документацију и покушате да схватите како да направите ваш бот још паметнијим. Теасер: Можете слати поруке са сликама и дугмадима! Такође је могуће користити услуге као што су Вит.аи и Апи.аи за кодирање вашег бот-а, а затим га интегрисати са Фацебоок-ом, али у мојим слабим покушајима да користим те сервисе, Вит.аи не ради баш најбоље и Апи.аи има оштру кривуљу учења за почетнике.

Да ли сте икада развили бот за Фацебоок? Ако имате, како сте то развили и шта може? Да ли сте користили сервисе као што су Вит.аи и Апи.аи да бисте направили ваш бот? Ако никада нисте пробали своје шифрирање ботова, идите и развите свој властити бот за Фацебоок, направите га паметнијим и бољим, и јавите нам своје искуство у коментарима испод.

Top