1. Ringkasan
API ini menerima 1 pesan teks dari iPhone Shortcut, meneruskannya ke Groq AI, lalu mengembalikan jawaban singkat yang siap dibacakan Text-to-Speech. Seluruh percakapan otomatis tersimpan ke D1 database dan bisa dilihat di web chat utama.
Alur
Shortcut → POST → Groq → JSON → Suara
Endpoint
https://chatbox-shortcut-api.cocnantok.workers.dev
2. Endpoint & Autentikasi
- Method: POST (selain POST → 405). Preflight CORS OPTIONS → 204.
- CORS: Access-Control-Allow-Origin: * — bisa dipanggil dari browser & Shortcuts tanpa hambatan.
- API Key (Groq, mulai gsk_…) — pilih salah satu, urutan prioritas:
- Header Authorization: Bearer gsk_…
- Field api_key di JSON body
- Secret env GROQ_API_KEY di dashboard Workers (opsional)
- Model: opsional, default groq/compound-mini (aktif di akun ini).
- System prompt bawaan: jawaban disetel singkat, padat, ramah, tanpa markdown — ramah untuk TTS.
3. Format Request & Response
Request (JSON body)
{
"message": "Halo, jam berapa sekarang di Jakarta?",
"api_key": "gsk_xxxxxxxxxxxxxxxx",
"model": "groq/compound-mini"
}
// message wajib ; api_key & model opsional
Response sukses (HTTP 200)
{ "reply": "Sekarang pukul 09.15 WIB." }
Response error (contoh)
{ "error": "Groq API menolak request: Invalid API Key" }
Tabel status code
| Kode | Arti | Contoh pesan |
|---|---|---|
| 200 | Sukses | {"reply": "…"} |
| 204 | Preflight CORS (OPTIONS) | — |
| 400 | Body invalid / message kosong / key hilang | Field "message" wajib diisi. |
| 405 | Bukan POST | Metode tidak diizinkan. Gunakan HTTP POST. |
| 502 | Groq menolak (key salah / model tidak tersedia) | Groq API menolak request: Invalid API Key |
| 500 | Kesalahan tak terduga di server | Terjadi kesalahan server: … |
4. Tes dari Terminal (curl)
Dengan header Authorization (macOS / Linux)
curl -X POST https://chatbox-shortcut-api.cocnantok.workers.dev \
-H "Content-Type: application/json" \
-H "Authorization: Bearer gsk_xxxxxxxxxxxxxxxx" \
-d '{"message":"Halo, siapa kamu?"}'
Dengan api_key di body (PowerShell — pakai file agar tak masalah tanda kutip)
Set-Content body.json '{"message":"Halo, siapa kamu?","api_key":"gsk_xxxxxxxxxxxxxxxx"}' -NoNewline -Encoding Ascii
curl.exe -X POST -H "Content-Type: application/json" --data-binary "@body.json" https://chatbox-shortcut-api.cocnantok.workers.dev
5. Setup di iPhone Shortcut (langkah demi langkah)
Nama aksi ditulis versi Inggris (posisinya sama pada iPhone berbahasa Indonesia).
-
5.1. Buka Shortcuts → tombol + → beri nama (mis. Asisten).
-
5.2. Tambah aksi Get Contents of URL dan isi:
- Method: POST
- URL: https://chatbox-shortcut-api.cocnantok.workers.dev
- Headers — ketuk area headers → tambah baris:
- Content-Type = application/json
- Authorization = Bearer gsk_xxxxxxxxxxxxxxxx (opsional kalau Anda kirim api_key di body)
- Request Body — pilih tipe JSON, tambah field:
- message = variable (mis. Shortcut Input atau Ask Each Time)
- api_key = gsk_xxxxxxxxxxxxxxxx (boleh dihapus kalau sudah pakai header Authorization)
- model = groq/compound-mini (opsional)
-
5.3. Baca respons → ambil reply
- Ketuk output Get Contents of URL → pilih Dictionary (bila tidak otomatis, tambah aksi Get Dictionary from Input).
- Tambah aksi Get Value for Key → ketik kunci: reply.
-
5.4. Bacakan jawabannya
Tambah aksi Speak Text → masukkan variable dari langkah 5.3. Jalankan shortcut, harus ada suara membacakan jawaban.
-
5.5. (Opsional) Mode suara penuh — pengganti Siri
- Letakkan aksi Dictate Text di paling atas shortcut (prompt: “Katakan pertanyaanmu”).
- Field message di body JSON → pilih variable Dictated Text.
- Di pengaturan shortcut, aktifkan Use with Siri.
- Sekarang ucapkan “Hey Siri, Asisten” → shortcut merekam suara → dikirim → jawaban dibacakan.
-
5.6. (Opsional) Debug error
Tambahkan aksi Show Alert berisi respons mentah URL sebelum parsing, lalu bandingkan dengan tabel status di bagian 3.
6. Penyimpanan & Konteks
- Setiap percakapan tersimpan di D1 (tabel topics + messages) — satu topik per hari bernama Asisten Suara YYYY-MM-DD.
- Percakapan lanjutan tetap membawa konteks: riwayat hari itu ikut dikirim ke Groq (batas 40 pesan terakhir).
- Reset otomatis tengah malam — topik baru, konteks kosong lagi.
- History muncul di web chat utama di sidebar (butuh PIN).
- Kalau Anda lanjutkan dari web (buka topik “Asisten Suara …”), konteks juga jalan karena web membaca pesan yang sama.
7. FAQ & Catatan
- Key Groq saya aman? Ya — dikirim dari iPhone langsung ke endpoint (HTTPS), tidak lewat server web utama. Kalau ditaruh di body/header Shortcut, hanya tersimpan di iPhone.
- Kenapa default model bukan llama-3.3-70b-versatile? Model itu sudah dinonaktifkan Groq; default diganti groq/compound-mini yang aktif di akun ini. Setiap saat bisa dikirim field "model" dengan model lain.
- API bisa dipakai dari aplikasi lain? Bisa — selama mengirim POST + key, endpoint itu terbuka (CORS *).
- Konteks tidak melewati batas jam 00.00. Untuk lanjutan lintas hari dibutuhkan pengiriman topic_id — belum diimplementasikan agar tetap simpel.
WebChatbox AI · API Shortcut · Kembali ke chat