All Products
Search
Document Center

Intelligent Media Services:Hasilkan token otentikasi ARTC

Last Updated:Jun 04, 2026

Hasilkan token otentikasi ARTC yang diperlukan oleh SDK AICallKit untuk memulai panggilan.

Cara kerja

SDK AICallKit memulai panggilan agen AI dari client. Server aplikasi Anda harus menghasilkan token otentikasi dan menyediakan titik akhir agar client dapat mengambilnya sebelum setiap panggilan.

Prosedur

Untuk menghasilkan token otentikasi ARTC, Anda memerlukan App ID dan AppKey aplikasi ARTC Anda.

  1. Buka Konsol IMS dan klik agen AI Anda untuk membuka halaman detailnya.

    Pada tab Basic Information, temukan bagian Workflow Configuration dan catat RTC App ID yang tercantum di bawah ARTC application.

  2. Klik RTC App ID untuk membuka Konsol ApsaraVideo Live dan dapatkan App ID serta AppKey.

    Pada halaman Application Management, klik nama aplikasi Anda, buka tab Basic Information, lalu salin App ID dan AppKey.

  3. Gunakan App ID dan AppKey untuk menghasilkan token otentikasi ARTC. Token dihitung sebagai berikut.

    // 1. Gabungkan bidang-bidang berikut: AppID+AppKey+ChannelID+UserID+Nonce+Timestamp
    // 2. Gunakan algoritma SHA-256 untuk meng-hash string yang digabungkan dan hasilkan token.
    token = sha256(AppID+AppKey+ChannelId+UserID+Nonce+timestamp)
    // Contoh:
    AppID = "abc",AppKey="abckey",ChannelID="abcChannel",UserID="abcUser",Nonce="",Timestamp=1699423634
    token = sha256("abcabckeyabcChannelabcUser1699423634") = "3c9ee8d9f8734f0b7560ed8022a0590659113955819724fc9345ab8eedf84f31"

    Parameter

    Deskripsi

    AppID

    ID dan kunci aplikasi ARTC Anda. Keduanya dihasilkan saat Anda membuat aplikasi ARTC di Konsol ApsaraVideo Live. Untuk informasi selengkapnya, lihat Dapatkan parameter pengembangan aplikasi.

    AppKey

    ChannelId

    ID channel, yang Anda tentukan sendiri. Nilainya harus berupa string dan tidak boleh berupa Long. ID channel dapat berisi angka, huruf kapital, huruf kecil, tanda hubung (-), dan garis bawah (_), serta panjangnya tidak boleh melebihi 64 karakter. Host dan tamu co-streaming harus menggunakan ID channel yang sama.

    UserID

    ID pengguna, yang Anda tentukan sendiri. Nilainya harus berupa string dan tidak boleh berupa Long. ID pengguna dapat berisi angka, huruf kapital, huruf kecil, tanda hubung (-), dan garis bawah (_), serta panjangnya tidak boleh melebihi 64 karakter.

    nonce

    Nonce dapat berupa string kosong. Kami menyarankan untuk membiarkannya kosong.

    timestamp

    Timestamp kedaluwarsa dalam satuan detik. Kami menyarankan mengatur masa berlaku selama 24 jam. Untuk mengatur masa berlaku 24 jam, tambahkan 86.400 (24 * 60 * 60) ke timestamp saat ini dalam satuan detik.

    • Pembuatan token di sisi server: Hasilkan token di server aplikasi Anda dengan salah satu contoh berikut.

      Java
      package com.example;
      import java.nio.charset.StandardCharsets;
      import java.security.MessageDigest;
      import java.security.NoSuchAlgorithmException;
      import java.util.Base64;
      import java.util.Calendar;
      import org.json.JSONObject;
      public class App {
          public static String createBase64Token(String appid, String appkey, String channelid, String userid) {
              // Hitung timestamp kedaluwarsa (24 jam dari sekarang)
              Calendar calendar = Calendar.getInstance();
              calendar.add(Calendar.HOUR_OF_DAY, 24);
              long timestamp = calendar.getTimeInMillis() / 1000;
              // Gabungkan string
              String stringBuilder = appid + appkey + channelid + userid + timestamp;
              // Hitung hash SHA-256
              String token = sha256(stringBuilder);
              // Buat objek JSON
              JSONObject base64tokenJson = new JSONObject();
              base64tokenJson.put("appid", appid);
              base64tokenJson.put("channelid", channelid);
              base64tokenJson.put("userid", userid);
              base64tokenJson.put("nonce", "");
              base64tokenJson.put("timestamp", timestamp);
              base64tokenJson.put("token", token);
              // Konversi objek JSON menjadi string dan encode dalam Base64
              String jsonStr = base64tokenJson.toString();
              String base64token = Base64.getEncoder().encodeToString(jsonStr.getBytes(StandardCharsets.UTF_8));
              return base64token;
          }
          private static String sha256(String input) {
              try {
                  MessageDigest digest = MessageDigest.getInstance("SHA-256");
                  byte[] hash = digest.digest(input.getBytes(StandardCharsets.UTF_8));
                  StringBuilder hexString = new StringBuilder();
                  for (byte b : hash) {
                      String hex = Integer.toHexString(0xff & b);
                      if (hex.length() == 1)
                          hexString.append('0');
                      hexString.append(hex);
                  }
                  return hexString.toString();
              } catch (NoSuchAlgorithmException e) {
                  throw new RuntimeException(e);
              }
          }
          public static void main(String[] args) {
              String appid = "your_appid";
              String appkey = "your_appkey";
              String channel_id = "your_channel_id";
              String user_id = "your_user_id";
              String base64token = createBase64Token(appid, appkey, channel_id, user_id);
              System.out.println("Base64 Token: " + base64token);
          }
      }
      
      Python
      #!/usr/bin/env python
      # -*- coding: UTF-8 -*-
      import hashlib
      import datetime
      import time
      import base64
      import json
      def create_base64_token(app_id, app_key, channel_id, user_id):
          expire = datetime.datetime.now() + datetime.timedelta(days=1)
          timestamp = int(time.mktime(expire.timetuple()))
          h = hashlib.sha256()
          h.update(str(app_id).encode('utf-8'))
          h.update(str(app_key).encode('utf-8'))
          h.update(str(channel_id).encode('utf-8'))
          h.update(str(user_id).encode('utf-8'))
          h.update(str(timestamp).encode('utf-8'))
          token = h.hexdigest()
          jsonToken = {'appid': str(app_id),
                       'channelid': str(channel_id),
                       'userid':str(user_id),
                       'nonce':'',
                       'timestamp':timestamp,
                       'token':str(token)
                      }
          base64Token = base64.b64encode(json.dumps(jsonToken).encode())
          return base64Token
      def main():
          app_id = 'your_appid'
          app_key = 'your_appkey'
          channel_id = 'your_channel_id'
          user_id = 'your_user_id'
          base64Token = create_base64_token(app_id, app_key, channel_id, user_id)
          print(base64Token)
      if __name__ == '__main__':
          main()
      Go
      package main
      import (
      	"crypto/sha256"
      	"encoding/base64"
      	"encoding/hex"
      	"encoding/json"
      	"fmt"
      	"time"
      )
      func createBase64Token(appid, appkey, channelID, userID string) (string, error) {
      	// Hitung timestamp kedaluwarsa (24 jam dari sekarang)
      	timestamp := time.Now().Add(24 * time.Hour).Unix()
      	// Gabungkan string
      	stringBuilder := appid + appkey + channelID + userID + fmt.Sprintf("%d", timestamp)
      	// Hitung hash SHA-256
      	hasher := sha256.New()
      	hasher.Write([]byte(stringBuilder))
      	token := hasher.Sum(nil)
      	// Konversi hash ke string heksadesimal menggunakan encoding/hex
      	tokenHex := hex.EncodeToString(token)
      	// Buat objek JSON
      	tokenJSON := map[string]interface{}{
      		"appid":     appid,
      		"channelid": channelID,
      		"userid":    userID,
      		"nonce":     "",
      		"timestamp": timestamp,
      		"token":     tokenHex,
      	}
      	// Konversi objek JSON menjadi string dan encode dalam Base64
      	jsonBytes, err := json.Marshal(tokenJSON)
      	if err != nil {
      		return "", err
      	}
      	base64Token := base64.StdEncoding.EncodeToString(jsonBytes)
      	return base64Token, nil
      }
      func main() {
      	appid := "your_appid"
      	appkey := "your_appkey"
      	channelID := "your_channel_id"
      	userID := "your_user_id"
      	token, err := createBase64Token(appid, appkey, channelID, userID)
      	if err != nil {
      		fmt.Println("Error creating token:", err)
      		return
      	}
      	fmt.Println("Base64 Token:", token)
      }
    • Pembuatan token di sisi client: Selama pengembangan, Anda dapat menghasilkan token di sisi client, bukan di server. Buat objek JSON yang berisi token yang telah dihitung dan lima parameter: App ID, channel ID, nonce, user ID, dan timestamp. Encode objek JSON tersebut dalam Base64 dan berikan ke SDK ARTC. Sertakan bidang UserName untuk troubleshooting.

      Penting

      Metode ini menyematkan AppKey dan informasi sensitif lainnya ke dalam aplikasi. Gunakan hanya untuk pengujian dan pengembangan. Jangan gunakan metode ini di lingkungan produksi. Menampilkan AppKey di sisi client menimbulkan risiko keamanan serius dan dapat menyebabkan pencurian kunci tersebut.