Lewati ke konten utama

Deploy Bot Facebook Messenger Anda dengan Python

Panduan langkah demi langkah untuk dengan mudah mendeploy chatbot Facebook Messenger dengan Python, menggunakan Flask, requests, dan ngrok.
Diperbarui 28 Sep 2026  · 7 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

Jika dilakukan dengan benar, berinteraksi dengan komputer melalui bahasa manusia sangatlah kuat dan juga cukup menyenangkan. Perangkat Pesan dan Kendali Suara adalah platform besar berikutnya, dan komputasi percakapan berperan penting dalam menciptakan pengalaman realitas tertambah dan virtual yang menarik. Ada sejumlah tantangan unik dalam membangun program seperti ini, misalnya: bagaimana cara membuat chatbot saya dapat diakses dari luar?

Dalam tutorial ini, Anda akan melalui langkah-langkah yang diperlukan untuk mendeploy chatbot di Facebook Messenger, yang memiliki lebih dari 1 miliar pengguna aktif. Anda dapat menjangkau audiens yang sangat besar hanya dengan beberapa baris kode.

Ada 3 langkah utama untuk menyelesaikannya. Anda perlu:

  • membuat server yang mendengarkan pesan dari Facebook (menggunakan flask)
  • mendefinisikan fungsi untuk mengirim pesan kembali ke pengguna (menggunakan requests)
  • meneruskan koneksi https ke mesin lokal Anda (menggunakan ngrok)

Jika Anda ingin tahu lebih lanjut tentang cara mengubah bahasa manusia menjadi instruksi mesin, lihat kursus DataCamp Building Chatbots in Python.

Perhatikan bahwa yang tidak akan Anda bahas dalam tulisan ini adalah bagaimana bot Anda dapat memahami apa yang dikatakan orang dan merespons dengan tepat. Untuk mempelajari lebih lanjut tentang hal itu, Anda sebaiknya melihat Rasa NLU, Rasa Core, dan kursus DataCamp yang baru saja disebutkan.

Chatbot Python

Bungkus Chatbot Anda dalam Server http

Langkah pertama adalah membuat server http yang mendengarkan pesan yang dikirim oleh Facebook, mendapatkan respons terhadap pesan tersebut, dan akhirnya mengirimkan respons kembali ke pengguna di Facebook. Kita akan menggunakan flask untuk membuat server ini. Gagasan dasarnya adalah sebagai berikut:

  • Buat aplikasi flask yang mendengarkan pesan yang dikirim ke localhost:5000/webhook. Saat pesan dikirim di Facebook, pesan tersebut akan tiba sebagai permintaan http ke URL ini.
  • Fungsi listen() menangani permintaan http ini dan memeriksa bahwa permintaan tersebut berisi pesan Facebook yang valid
  • Jika pesannya valid, fungsi get_bot_response() dipanggil dan respons dikirim kembali ke Facebook Messenger

Selain itu, Anda akan membuat fungsi bernama verify_webhook() yang menangani autentikasi awal antara Facebook dan aplikasi Anda.

Skrip finalnya seperti ini (simpan sebagai server.py):

from flask import Flask, request

app = Flask(__name__)

FB_API_URL = 'https://graph.facebook.com/v2.6/me/messages'
VERIFY_TOKEN = ''# <paste your verify token here>
PAGE_ACCESS_TOKEN = ''# paste your page access token here>"


def get_bot_response(message):
    """This is just a dummy function, returning a variation of what
    the user said. Replace this function with one connected to chatbot."""
    return "This is a dummy response to '{}'".format(message)


def verify_webhook(req):
    if req.args.get("hub.verify_token") == VERIFY_TOKEN:
        return req.args.get("hub.challenge")
    else:
        return "incorrect"

def respond(sender, message):
    """Formulate a response to the user and
    pass it on to a function that sends it."""
    response = get_bot_response(message)
    send_message(sender, response)


def is_user_message(message):
    """Check if the message is a message from the user"""
    return (message.get('message') and
            message['message'].get('text') and
            not message['message'].get("is_echo"))


@app.route("/webhook")
def listen():
    """This is the main function flask uses to 
    listen at the `/webhook` endpoint"""
    if request.method == 'GET':
        return verify_webhook(request)

    if request.method == 'POST':
        payload = request.json
        event = payload['entry'][0]['messaging']
        for x in event:
            if is_user_message(x):
                text = x['message']['text']
                sender_id = x['sender']['id']
                respond(sender_id, text)

        return "ok"

Pada skrip di atas variabel VERIFY_TOKEN dan PAGE_ACCESS_TOKEN belum ditetapkan — jadi Anda harus mengisinya. VERIFY_TOKEN bisa berupa string apa saja, digunakan sebagai semacam kata sandi untuk memberi tahu Facebook bahwa server ini ingin menerima pesan. Sebaiknya gunakan string acak yang panjang. Anda dapat melakukannya dengan cepat dengan menjalankan openssl rand -base64 32 di terminal Anda.

Jangan khawatir dulu tentang PAGE_ACCESS_TOKEN — Anda akan melihat cara mendapatkannya di bawah!

Kirim Pesan Kembali ke Pengguna

Selanjutnya, Anda akan menulis fungsi yang mengirim respons kembali ke Facebook Messenger menggunakan pustaka Python bernama requests. Secara khusus, Anda menggunakan metode post(), yang membuat permintaan HTTP POST. Permintaan POST adalah cara umum untuk mengirim informasi ke server.

Fungsi Anda seharusnya terlihat seperti ini:

import requests

def send_message(recipient_id, text):
    """Send a response to Facebook"""
    payload = {
        'message': {
            'text': text
        },
        'recipient': {
            'id': recipient_id
        },
        'notification_type': 'regular'
    }

    auth = {
        'access_token': PAGE_ACCESS_TOKEN
    }

    response = requests.post(
        FB_API_URL,
        params=auth,
        json=payload
    )

    return response.json()

Ekspos Endpoint https dan Sambungkan Halaman Facebook

URL localhost:5000 hanya berfungsi untuk permintaan yang dibuat pada komputer yang sama dengan server yang berjalan. Jadi Anda perlu memberi tahu Facebook bagaimana cara menjangkau server flask Anda. Untuk melakukannya, pertama pasang ngrok.

Buka halaman ini dan instal versi untuk sistem operasi Anda. Jika Anda menggunakan Mac dan memiliki homebrew, cara tercepat untuk memasang ngrok adalah dengan brew cask install ngrok.

Mulai server ngrok di terminal Anda dengan ngrok http 5000. Ini akan menyiapkan endpoint https yang diteruskan ke mesin Anda pada port 5000, misalnya https://51b6b3fa.ngrok.io.

Catatan bahwa jika Anda keluar dari ngrok dan memulai ulang, URL ini akan berubah.

Buat Aplikasi dan Halaman Facebook

Langkah berikutnya adalah membuat aplikasi dan halaman di Facebook. Dokumentasi yang baik tersedia dari Facebook tetapi Anda akan menelusuri langkah-langkah utamanya di sini.

Untuk membuat aplikasi, pergi ke sini dan

  • klik My Apps -> Add a New App dan masukkan nama
  • Anda akan diarahkan ke dasbor untuk aplikasi tersebut
  • di bawah Products, temukan Add a Product dan klik Messenger -> Set Up

Untuk membuat halaman, Anda harus:

  • pergi ke pengaturan untuk Messenger, gulir ke bawah ke Token Generation dan klik tautan untuk create a new page untuk aplikasi Anda

Setelah Anda membuat halaman, kembali ke pengaturan Token Generation dan pilih halaman ini dari menu tarik-turun. Salin Page Access Token ke placeholder untuk PAGE_ACCESS_TOKEN di server.py di atas.

Mulai server bot Anda

Sekarang setelah semuanya siap, saatnya menjalankan server chatbot Anda! Di tab terminal terpisah, jalankan

FLASK_APP=server.py flask run

Siapkan webhook

Terakhir, Anda perlu mendaftarkan webhook di halaman pengembang Facebook.

  • Buka tab Messenger di Products lagi dan gulir ke bawah ke Webhooks, klik Setup Webhooks
  • Pada Callback URL masukkan URL ngrok Anda, misalnya, https://51b6b3fa.ngrok.io/webhook. Penting bahwa aplikasi flask Anda sedang berjalan pada tahap ini, karena verify_token() akan dipanggil pada langkah berikutnya
  • Pada kolom Verify Token, masukkan nilai yang Anda tetapkan di file server.py
  • Di Subscription Fields pastikan messages dan messaging_postbacks dicentang Klik Verify and Save untuk melakukan autentikasi

Penting: Kembali ke Products -> Messenger, dan di bawah Select a page to subscribe your webhook to the page events pilih halaman Anda dan klik Subscribe.

Selesai!

Bot Anda sekarang siap mengirim dan menerima pesan melalui Facebook Messenger. Saat ini, fungsi get_bot_response() Anda masih cukup sederhana, dan belum terasa seperti chatbot sungguhan! Untuk mempelajari semua tentang membangun chatbot, lihat kursus DataCamp Building Chatbots in Python dan tutorial Building a Chatbot using Chatterbot in Python, serta pustaka Python Rasa NLU dan Rasa Core. 

Topik
Python
Data Science

Pelajari lebih lanjut tentang Python

Kursus

Pengantar Python

4 jam
7.1M
Kuasai dasar-dasar analisis data dengan Python dalam 4 jam. Kursus online ini memperkenalkan antarmuka Python dan pustaka populer.
Lihat DetailRight Arrow
Mulai Kursus
Lihat SelengkapnyaRight Arrow
Terkait

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

Lihat SelengkapnyaLihat Selengkapnya