ThunderPhone 2.0 ಈಗ ಬಿಡುಗಡೆಯಾಗಿದೆ.ನೀವೇ ನೇರವಾಗಿ ಆರಂಭಿಸಿ — 2¢/ನಿಮಿಷದಿಂದ.ಘೋಷಣೆ ಓದಿ

Developer cookbook

ಪ್ರತಿ ಕರೆಯ ಡೈನಾಮಿಕ್ ಕಾನ್ಫಿಗರೇಶನ್

ನೀವು ನಿಯಂತ್ರಿಸುವ webhook ನಲ್ಲಿನ ಕಸ್ಟಮ್ ಲಾಜಿಕ್ ಆಧರಿಸಿ, ಪ್ರತಿಯೊಂದು ಒಳಬರುವ ಕರೆಗೂ ಉತ್ತರಿಸುವ ಏಜೆಂಟ್ ಅನ್ನು ಆಯ್ಕೆಮಾಡಿ — ಅಥವಾ ಅದರ prompt ಮತ್ತು ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಪ್ರತ್ಯೇಕವಾಗಿ ಮರುಬರೆಯಿರಿ.

ಡೀಫಾಲ್ಟ್ ಆಗಿ ಪ್ರತಿ ಫೋನ್ ಸಂಖ್ಯೆ ಮತ್ತು ಪ್ರಕಟಿಸಬಹುದಾದ ಕೀಗೆ ಸ್ಥಿರ ಏಜೆಂಟ್ ನಿಯೋಜಿಸಲಾಗಿರುತ್ತದೆ. ನಿಮಗೆ ಕರೆಮಾಡುವವರಿಗನುಗುಣವಾದ ಅಥವಾ ಸಂದರ್ಶಕರಿಗನುಗುಣವಾದ ಗ್ರಾಹಕೀಕರಣ ಬೇಕಾದಾಗ — VIP ರೂಟಿಂಗ್, ಲಾಗಿನ್ ಆಗಿರುವ ಬಳಕೆದಾರರ ಸಂದರ್ಭ, A/B prompt ಪರೀಕ್ಷೆಗಳು — ವೆಬ್‌ಹುಕ್ ಮೋಡ್‌ಗೆ ಬದಲಿಸಿ ಮತ್ತು ನಿಮ್ಮ ಸರ್ವರ್‌ಗೆ ನಿರ್ಧರಿಸಲು ಬಿಡಿ.

ಇದು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ

  1. ನೀವು telephony.incoming (ಫೋನ್) ಅಥವಾ web.incoming (ವಿಜೆಟ್) ಈವೆಂಟ್‌ಗೆ ಚಂದಾದಾರರಾಗುತ್ತೀರಿ. ಎರಡೂ ತಡೆಯುವ ವೆಬ್‌ಹುಕ್‌ಗಳಾಗಿವೆ: ಕರೆ ಮುಂದುವರಿಸುವ ಮೊದಲು ThunderPhone ನಿಮ್ಮ ಪ್ರತಿಕ್ರಿಯೆಗಾಗಿ ಕಾಯುತ್ತದೆ, ಫೋನ್ ಕರೆಗೆ 13 ಸೆಕೆಂಡುಗಳವರೆಗೆ (ಒಂದು ಮರುಪ್ರಯತ್ನ ಸೇರಿದಂತೆ) ಮತ್ತು ವಿಜೆಟ್ ಸೆಷನ್‌ಗೆ 10 ಸೆಕೆಂಡುಗಳವರೆಗೆ.
  2. ThunderPhone ನಿಮಗೆ {call_id, from_number, to_number} ಕಳುಹಿಸುತ್ತದೆ (ವಿಜೆಟ್ ಸೆಷನ್‌ಗಳು ಸಂಖ್ಯೆಗಳ ಬದಲಿಗೆ ವಿಜೆಟ್-ನಿರ್ದಿಷ್ಟ ಕ್ಷೇತ್ರಗಳನ್ನು ಹೊಂದಿರುತ್ತವೆ — ವಿನಂತಿ ಸ್ಕೀಮಾ ನೋಡಿ).
  3. ನಿಮ್ಮ ಸರ್ವರ್ ಏಜೆಂಟ್ ಕಾನ್ಫಿಗರೇಶನ್‌ನೊಂದಿಗೆ (ಪ್ರಾಂಪ್ಟ್, ಧ್ವನಿ, ಉತ್ಪನ್ನ, ಉಪಕರಣಗಳು) ಪ್ರತಿಕ್ರಿಯಿಸುತ್ತದೆ. ThunderPhone ಆ ಕರೆಗೆ ಆ ಕಾನ್ಫಿಗರೇಶನ್ ಅನ್ನು ಬಳಸುತ್ತದೆ.
  4. ಯಾವುದೇ ಪರ್ಯಾಯ ಏಜೆಂಟ್ ಇರುವುದಿಲ್ಲ. ನೀವು {} ಅಥವಾ ಅಮಾನ್ಯ ಕಾನ್ಫಿಗರೇಶನ್ ಹಿಂತಿರುಗಿಸಿದರೆ, ಅಥವಾ ಅದರ ಮರುಪ್ರಯತ್ನ ನಂತರವೂ ವಿನಂತಿ ವಿಫಲವಾದರೆ, ಫೋನ್ ಕರೆಯನ್ನು ತಕ್ಷಣವೇ ಕೊನೆಗೊಳಿಸಲಾಗುತ್ತದೆ ಮತ್ತು end_reason inbound_config_webhook_failed ನೊಂದಿಗೆ ದಾಖಲಿಸಲಾಗುತ್ತದೆ; ವಿಜೆಟ್ ಸೆಷನ್ ವಿನಂತಿ ವಿಫಲವಾಗುತ್ತದೆ.

1. ವೆಬ್‌ಹುಕ್ ಗಮ್ಯಸ್ಥಾನವನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಿ

ಫೋನ್ ಸಂಖ್ಯೆಗಳಿಗೆ, ನಿಮ್ಮ ಎಂಡ್‌ಪಾಯಿಂಟ್ ಅನ್ನು telephony.incoming ಗೆ ಸಬ್‌ಸ್ಕ್ರೈಬ್ ಮಾಡಿ:

curl -X POST https://api.thunderphone.com/v1/developer/webhook-endpoints \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "label":  "Prod call-incoming",
    "url":    "https://example.com/thunderphone/incoming",
    "events": ["telephony.incoming"]
  }'

ಪ್ರತಿಕ್ರಿಯೆಯು ಒಮ್ಮೆ ಮಾತ್ರದ secret ಅನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ — ಅದನ್ನು ಉಳಿಸಿಕೊಳ್ಳಿ; ಸಹಿ ಪರಿಶೀಲನೆಗಾಗಿ ಅದನ್ನು ಬಳಸುತ್ತೀರಿ.

ವಿಜೆಟ್ ಸೆಷನ್‌ಗಳಿಗೆ, ನಿಮ್ಮ ಎಂಡ್‌ಪಾಯಿಂಟ್ URL ಒಳಗೊಂಡಿರುವ mode="webhook" ಹೊಂದಿದ ಪ್ರಕಟಿಸಬಹುದಾದ ಕೀ ರಚಿಸಿ:

curl -X POST https://api.thunderphone.com/v1/publishable-key \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name":            "Dynamic widget",
    "mode":            "webhook",
    "webhook_url":     "https://example.com/thunderphone/widget-incoming",
    "allowed_domains": ["example.com"]
  }'

ಪ್ರತಿ ಸೆಷನ್ ಆರಂಭದಲ್ಲಿ ವಿಜೆಟ್ ಈ URL ಗೆ POST ಮಾಡುತ್ತದೆ.

2. ಹ್ಯಾಂಡ್ಲರ್ ಅನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸಿ

ಮೂರು ಸಾಮಾನ್ಯ ನಿಯಮಗಳು:

  • ಪ್ರತಿಯೊಂದು ವಿನಂತಿಯಲ್ಲೂ ಸಹಿಯನ್ನು ಪರಿಶೀಲಿಸಿ (ವೆಬ್‌ಹುಕ್ ಸಹಿಗಳನ್ನು ಪರಿಶೀಲಿಸಿ ನೋಡಿ). ಅಭಿವೃದ್ಧಿ ಪರಿಸರದಲ್ಲಿ ಇದನ್ನು ಬಿಟ್ಟುಬಿಡಬೇಡಿ — ಒಮ್ಮೆ ಸರಿಯಾಗಿ ಮಾಡಿ ಮತ್ತು ಮರುಬಳಸಿ.
  • ವೇಗವಾಗಿ ಪ್ರತಿಕ್ರಿಯಿಸಿ. ಫೋನ್ ಕರೆಯ ಮೊದಲ ಪ್ರಯತ್ನವನ್ನು 10 ಸೆಕೆಂಡುಗಳಲ್ಲಿ ಮತ್ತು ಸಂಪೂರ್ಣ ವಿನಿಮಯವನ್ನು 13 ಸೆಕೆಂಡುಗಳಲ್ಲಿ ಸ್ಥಗಿತಗೊಳಿಸಲಾಗುತ್ತದೆ; ಪ್ರತಿ ಸೆಕೆಂಡೂ ಕರೆಮಾಡುವವರಿಗೆ ಮೌನವಾಗಿರುತ್ತದೆ. ಅಗತ್ಯವಿದ್ದರೆ ಡೇಟಾಬೇಸ್ ಲುಕ್‌ಅಪ್‌ಗಳನ್ನು ಮಾಡಿ, ಆದರೆ ಡೌನ್‌ಸ್ಟ್ರೀಮ್ LLMಗಳನ್ನು ಸಿಂಕ್ರೋನಸ್ ಆಗಿ ಕರೆಯಬೇಡಿ — ಡೈನಾಮಿಕ್ prompt ರಚನೆ ಬೇಕಿದ್ದರೆ, ಮುಂಚಿತವಾಗಿ ಲೆಕ್ಕಿಸಿ ಕ್ಯಾಶ್ ಮಾಡಿ.
  • ಸುಗಮವಾಗಿ ಫಾಲ್‌ಬ್ಯಾಕ್ ಮಾಡಿ. ಯಾವುದೇ ಅನಿರೀಕ್ಷಿತ ಸ್ಥಿತಿಗೆ, ಡೀಫಾಲ್ಟ್ prompt ಮತ್ತು voice ಮೂಲಕ (ಅಥವಾ ಉಳಿಸಿದ agent_id ಮೂಲಕ) ಪ್ರತಿಕ್ರಿಯಿಸಿ. {} ಅಥವಾ ದೋಷ ಸ್ಥಿತಿಯನ್ನು ಹಿಂತಿರುಗಿಸಿದರೆ ಕರೆ ಕೊನೆಗೊಳ್ಳುತ್ತದೆ.
FastAPI
import hashlib
import hmac
import json
import os
 
from fastapi import FastAPI, HTTPException, Request
 
app = FastAPI()
SECRET = os.environ["THUNDERPHONE_WEBHOOK_SECRET"]
 
def verify(body: bytes, sig: str) -> bool:
    expected = hmac.new(SECRET.encode(), body, hashlib.sha256).hexdigest()
    return hmac.compare_digest(expected, sig or "")
 
@app.post("/thunderphone/incoming")
async def incoming(request: Request):
    body = await request.body()
    if not verify(body, request.headers.get("X-ThunderPhone-Signature", "")):
        raise HTTPException(401)
 
    event = json.loads(body)
    if event["type"] not in ("telephony.incoming", "web.incoming"):
        return {}  # fall back to default
 
    caller = event["data"]["from_number"]
    # Cheap DB lookup: is this a known VIP?
    customer = lookup_customer(caller)
    if customer and customer.tier == "vip":
        return {
            "prompt":  f"You are a VIP concierge for {customer.name}. Be proactive…",
            "voice":   "john",
            "product": "storm-base",
        }
    return {}  # default agent handles non-VIPs
 
def lookup_customer(phone: str):
    # ... your CRM integration ...
    pass
Express
import crypto from "node:crypto";
import express from "express";
 
const app = express();
const SECRET = process.env.THUNDERPHONE_WEBHOOK_SECRET;
 
function verify(body, sig) {
  const expected = crypto.createHmac("sha256", SECRET).update(body).digest("hex");
  return sig &&
    crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(sig));
}
 
app.post(
  "/thunderphone/incoming",
  express.raw({ type: "application/json" }),
  async (req, res) => {
    if (!verify(req.body, req.header("X-ThunderPhone-Signature"))) {
      return res.sendStatus(401);
    }
    const event = JSON.parse(req.body.toString("utf8"));
 
    const IMPORTANT_TYPES = new Set([
      "telephony.incoming",
      "web.incoming",
    ]);
    if (!IMPORTANT_TYPES.has(event.type)) return res.json({});
 
    const customer = await lookupCustomer(event.data.from_number);
    if (customer?.tier === "vip") {
      return res.json({
        prompt:  `You are a VIP concierge for ${customer.name}. Be proactive…`,
        voice:   "john",
        product: "storm-base",
      });
    }
    res.json({}); // fall back to default agent
  },
);

3. ಪ್ರತಿಕ್ರಿಯೆ ಸ್ಕೀಮಾ

ಪ್ರತಿಕ್ರಿಯೆಯ ಬಾಡಿಯು ಒಳಬರುವ-ಕರೆ ಪ್ರತಿಕ್ರಿಯೆ ಸ್ಕೀಮಾ ಜೊತೆಗೆ ನಿಖರವಾಗಿ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ. ಸಾಮಾನ್ಯವಾಗಿ ಬಳಸುವ ಫೀಲ್ಡ್‌ಗಳು:

ಕ್ಷೇತ್ರವಿಧವಿವರಣೆ
promptಸ್ಟ್ರಿಂಗ್ (ಅಗತ್ಯ)ಏಜೆಂಟ್‌ಗೆ ಸಿಸ್ಟಮ್ prompt
voiceಸ್ಟ್ರಿಂಗ್ (ಅಗತ್ಯ)GET /v1/voices ನಿಂದ ಧ್ವನಿ ಐಡಿ
productಸ್ಟ್ರಿಂಗ್ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ spark. ಪ್ರಾಯೋಗಿಕ ಉತ್ಪನ್ನಗಳು ಅನುಮತಿ ಪಟ್ಟಿಯಲ್ಲಿರುವ ಸಂಸ್ಥೆಗಳಿಗೆ ಮಾತ್ರ ಲಭ್ಯ.
background_trackಸ್ಟ್ರಿಂಗ್ | ಶೂನ್ಯಪರಿಸರದ ಆಡಿಯೊ ಐಡಿ
acknowledgement_prompt_modeಸ್ಟ್ರಿಂಗ್auto ಅಥವಾ manual (ack ಇರುವ Storm ಗೆ ಮಾತ್ರ)
acknowledgement_promptಸ್ಟ್ರಿಂಗ್ಮೋಡ್ manual ಆಗಿರುವಾಗ ಅಗತ್ಯ
toolsಅರೇಇನ್‌ಲೈನ್ ಫಂಕ್ಷನ್-ಟೂಲ್ ಸ್ಕೀಮಾಗಳು — ಫಂಕ್ಷನ್ ಟೂಲ್‌ಗಳನ್ನು ನೋಡಿ

ಉಳಿಸಿದ ಏಜೆಂಟ್ ಅನ್ನು ಉಳಿಸಿಕೊಳ್ಳಿ ಮತ್ತು ವೇರಿಯಬಲ್‌ಗಳನ್ನು ಒದಗಿಸಿ

ಆ ಸಂಸ್ಥೆಯ ಉಳಿಸಿದ ಏಜೆಂಟ್ ಅನ್ನು ಪ್ರತಿ-ಕರೆ ಡೇಟಾದೊಂದಿಗೆ ಬಳಸಲು {"agent_id": 12, "variables": {"name": "Ada"}} ಹಿಂತಿರುಗಿಸಿ. ಅದರ prompt ನಲ್ಲಿ {{name}} ಅಥವಾ {{name|Friend}} ಇರಬಹುದು. ವೆಬ್‌ಹುಕ್ ಚರಗಳು ವಿನಂತಿ-ಮಟ್ಟದ ಚರಗಳ ಮೇಲೆ ವಿಲೀನಗೊಳ್ಳುತ್ತವೆ; null ಪ್ಲೇಸ್‌ಹೋಲ್ಡರ್ ಡೀಫಾಲ್ಟ್ ಅನ್ನು ಬಳಸುತ್ತದೆ, ಅಥವಾ ಯಾವುದನ್ನೂ ಒದಗಿಸದಿದ್ದರೆ ಖಾಲಿ ಪಠ್ಯವನ್ನು ಬಳಸುತ್ತದೆ. ಅಂತಿಮ ಮೌಲ್ಯಗಳು ಮತ್ತು ಪರಿಹರಿಸದ ಹೆಸರುಗಳು ಕರೆ ವಿವರಗಳು ಹಾಗೂ ಪೂರ್ಣಗೊಳಿಸುವಿಕೆ ವೆಬ್‌ಹುಕ್‌ಗಳಲ್ಲಿ ಕಾಣಿಸುತ್ತವೆ. ಉಳಿಸಿದ-ಏಜೆಂಟ್ ಪ್ರತಿಕ್ರಿಯೆಗಳು agent_id, variables ಮತ್ತು timezone ಅನ್ನು ಮಾತ್ರ ಸ್ವೀಕರಿಸುತ್ತವೆ. prompt ಇದ್ದರೆ, ಪ್ರತಿಕ್ರಿಯೆಯು ಇನ್‌ಲೈನ್ ಸಂರಚನೆಯನ್ನು ಬಳಸುತ್ತದೆ ಮತ್ತು agent_id ಅನ್ನು ನಿರ್ಲಕ್ಷಿಸುತ್ತದೆ (null ಅಥವಾ ಪೂರ್ಣಾಂಕವಲ್ಲದ ಮೆಟಾಡೇಟಾ ಸೇರಿದಂತೆ); ಇನ್‌ಲೈನ್ prompt ಇನ್ನೂ ಮಾನ್ಯವಾಗಿರಬೇಕು. ಇನ್‌ಲೈನ್ ಸಂರಚನೆ ಪ್ರತಿಕ್ರಿಯೆಗಳು variables ಅನ್ನೂ ಒಳಗೊಂಡಿರಬಹುದು. ಉಳಿಸಿದ-ಏಜೆಂಟ್ ಪ್ರತಿಕ್ರಿಯೆಗಳು ಫೋನ್ ಮತ್ತು ವಿಜೆಟ್ ಕರೆಗಳೆರಡರಲ್ಲೂ ಏಜೆಂಟ್‌ನ ನಿಯೋಜಿತ A/B ವಿಭಜನೆಯನ್ನು ಬಳಸುತ್ತವೆ, ನಂತರ ಚರಗಳನ್ನು ರೆಂಡರ್ ಮಾಡುತ್ತವೆ. ಕರೆ ಚರಗಳನ್ನು ನೋಡಿ ಮಿತಿಗಳು ಮತ್ತು ಸೆಷನ್ API ಬೆಂಬಲಕ್ಕಾಗಿ. ತಡೆಯುವ ಸಂರಚನೆಯು ಹಳೆಯ ಫೋನ್-ಸಂಖ್ಯೆ/ಸಂಸ್ಥೆ URL ಅಥವಾ ವೆಬ್‌ಹುಕ್-ಮೋಡ್ ವಿಜೆಟ್ ಕೀಲಿಯಿಂದ ಬರುತ್ತದೆ; ಎಂಡ್‌ಪಾಯಿಂಟ್-ಸಿಸ್ಟಮ್ ಒಳಬರುವ ಈವೆಂಟ್‌ಗಳು ಅಧಿಸೂಚನೆಗಳು ಮಾತ್ರ.

ಪ್ರತಿ ಕರೆಯ ಸಮಯ ವಲಯವನ್ನು ಹೊಂದಿಸಿ

ಒಂದು ಏಜೆಂಟ್ ವಿಭಿನ್ನ ಸಮಯ ವಲಯಗಳಲ್ಲಿರುವ ಸಂಪರ್ಕಗಳಿಗೆ ಉತ್ತರಿಸಬಹುದು. ಉಳಿಸಿದ ಏಜೆಂಟ್ ಅಥವಾ ಇನ್‌ಲೈನ್ ಪ್ರತಿಕ್ರಿಯೆಗೆ IANA ಹೆಸರಾದ timezone ಅನ್ನು ಸೇರಿಸಿ; ಆಗ ಏಜೆಂಟ್ ದಿನಾಂಕ ಮತ್ತು ಸಮಯವನ್ನು ತಿಳಿಸಿ, ಈ ಕರೆಗಾಗಿ ಏಜೆಂಟ್‌ನ ಸ್ವಂತ ಸಮಯ ವಲಯಕ್ಕಿಂತ ಮುಂಚಿತವಾಗಿ ಆ ವಲಯದಲ್ಲಿನ ಸಮಯಗಳನ್ನು ನೀಡುತ್ತದೆ:

{"agent_id": 12, "timezone": "America/Chicago", "variables": {"name": "Ada"}}

variables ನಲ್ಲಿ ಟೈಮ್‌ಸ್ಟ್ಯಾಂಪ್ ಬದಲಿಗೆ ವಲಯವನ್ನು ಕಳುಹಿಸಿ: ಕರೆಯ ಸಮಯದಲ್ಲಿ ಏಜೆಂಟ್‌ನ ಗಡಿಯಾರ ನಿರಂತರವಾಗಿ ಚಲಿಸುತ್ತಿರುತ್ತದೆ ಮತ್ತು ನೀವು ನೀಡುವ ಸಮಯ ಹಳೆಯದಾಗುತ್ತದೆ. IANA ವಲಯವಲ್ಲದ ಮೌಲ್ಯವನ್ನು ನಿರ್ಲಕ್ಷಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಕರೆ ಏಜೆಂಟ್‌ನ ವಲಯದಲ್ಲೇ ಸಂಪರ್ಕಗೊಳ್ಳುತ್ತದೆ.

ಮಾದರಿಗಳು

ಲಾಗಿನ್ ಆಗಿರುವ ಬಳಕೆದಾರರ ಸಂದರ್ಭ

ವೆಬ್‌ಹುಕ್-ಮೋಡ್ ವಿಜೆಟ್‌ಗಳಲ್ಲಿ, ಭೇಟಿ ನೀಡುವವರ ಪುಟಕ್ಕೆ ಅವರು ಯಾರೆಂದು ಈಗಾಗಲೇ ತಿಳಿದಿರುತ್ತದೆ. ವಿಜೆಟ್ SDK ಮುಂದಕ್ಕೆ ಕಳುಹಿಸುವ ಕ್ವೆರಿ ಸ್ಟ್ರಿಂಗ್ ಪ್ಯಾರಾಮೀಟರ್‌ನೊಂದಿಗೆ (?customer_id=123) ನಿಮ್ಮ ವೆಬ್‌ಹುಕ್‌ಗೆ ಕರೆ ಮಾಡಿ ಮತ್ತು ಸರ್ವರ್-ಸೈಡ್‌ನಲ್ಲಿ ಗ್ರಾಹಕರನ್ನು ಹುಡುಕಿ.

A/B prompt ಬಿಡುಗಡೆ

ನೀವು ಇದನ್ನು ಸ್ವತಃ ನಿರ್ಮಿಸುವ ಮೊದಲು, ThunderPhone ನಲ್ಲಿ ಸ್ಥಳೀಯ ಪ್ರಯೋಗಗಳು ವೈಶಿಷ್ಟ್ಯವಿದೆ ಎಂಬುದನ್ನು ಗಮನಿಸಿ (/dashboard/experiments ಮತ್ತು ಏಜೆಂಟ್ ಬಿಲ್ಡರ್‌ನ A/B ಟ್ಯಾಬ್) ಅದು ವೇರಿಯಂಟ್‌ಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ, ಟ್ರಾಫಿಕ್ ವಿಭಜಿಸುತ್ತದೆ ಮತ್ತು ಪ್ರತಿ ವೇರಿಯಂಟ್‌ನ ಫಲಿತಾಂಶಗಳನ್ನು ಹೋಲಿಸುತ್ತದೆ — ವೆಬ್‌ಹುಕ್ ಅಗತ್ಯವಿಲ್ಲ.

ಆದರೂ ನಿಮಗೆ ವೆಬ್‌ಹುಕ್-ಭಾಗದ ನಿಯಂತ್ರಣ ಬೇಕಾದರೆ: call_id ಅನ್ನು ಹ್ಯಾಶ್ ಮಾಡಿ → ಬಕೆಟ್; 0..49 ಗೆ prompt A ಮತ್ತು 50..99 ಗೆ prompt B ಒದಗಿಸಿ. ನೀವು ಆಯ್ಕೆಮಾಡಿದ ಬಕೆಟ್ ಅನ್ನು ನಿಮ್ಮ ಸ್ವಂತ DB ಯಲ್ಲಿ ದಾಖಲಿಸಿ ಮತ್ತು ನಂತರ ಪೂರ್ಣಗೊಂಡ ಕರೆಯ ಗ್ರೇಡ್‌ನೊಂದಿಗೆ ಸಂಬಂಧಿಸಿ.

ಸಮಯ-ಆಧಾರಿತ ರೂಟಿಂಗ್

ವ್ಯವಹಾರ ಸಮಯ → "ಲೈವ್ ಬೆಂಬಲ" ಏಜೆಂಟ್; ವ್ಯವಹಾರೇತರ ಸಮಯ → "ಸಂದೇಶ ತೆಗೆದುಕೊಳ್ಳಿ" ಏಜೆಂಟ್. ನಿಮ್ಮ ಹ್ಯಾಂಡ್ಲರ್‌ನಲ್ಲಿ new Date().getUTCHours() ಆಧಾರಿತ ಸರಳ ಸ್ವಿಚ್.


ಮುಂದಿನ ಹಂತಗಳು