Topik ini menjelaskan cara mengonfigurasi komponen Call a Function. Komponen ini memungkinkan Anda memanggil fungsi kustom di Alibaba Cloud Function Compute dari dalam suatu alur untuk menerapkan logika bisnis kustom, seperti pemrosesan data, panggilan layanan remote, pengiriman pesan, dan penyimpanan data.
Informasi komponen
Ikon | Nama |
Pada kotak dialog Call a Function, pilih tab Function Input, masukkan parameter input dalam format JSON di editor kode (misalnya, | Call a Function |
Ikhtisar prosedur
Untuk menggunakan komponen Call a Function, Anda harus terlebih dahulu mengaktifkan layanan Function Compute, lalu membuat fungsi.
Buat dan konfigurasi fungsi: Buat dan konfigurasi fungsi di Function Compute.
Rancang fungsi: Rancang fungsi di Function Compute.
Konfigurasi komponen: Konfigurasi komponen Call a Function dalam alur Anda untuk memanggil fungsi kustom dari Function Compute.
Prasyarat
Layanan Function Compute telah diaktifkan.
1. Buat dan konfigurasi fungsi
Masuk ke Konsol Function Compute. Di bagian atas halaman, pilih Wilayah. Kami menyarankan Anda memilih Wilayah yang sama dengan alur Anda, misalnya, Singapore. Di panel navigasi sebelah kiri, pilih untuk membuka halaman Functions.
Pada halaman Functions, klik .
Konfigurasi utama: Pada bagian Code, untuk Runtime, pilih jenis runtime yang sesuai. Topik ini menggunakan contoh .
Konfigurasi parameter lain sesuai kebutuhan.
2. Rancang fungsi
Menggunakan templat fungsi yang disediakan membantu Anda fokus pada logika bisnis dan segera men-deploy fungsi.
Pada halaman Function Details, klik tab Code dan ganti konten default file
index.pydengan templat berikut.CatatanKode ini merupakan penanganan WSGI (Web Server Gateway Interface) yang kompatibel dengan logika pemanggilan alur. Kode ini tidak berisi logika bisnis kustom apa pun. Jangan mengubah fungsi atau konten dalam file ini.
import json from my import * # DO NOT CHANGE THIS ENTIRE FILE! # handle wsgi request # about wsgi: https://wsgi.readthedocs.io/en/latest/learn.html def handler(environ, start_response): # get request_body try: request_body_size = int(environ.get('CONTENT_LENGTH', 0)) except ValueError: request_body_size = 0 request_body = environ['wsgi.input'].read(request_body_size) print(request_body) # get path info path_info = environ['PATH_INFO'] print(path_info) # load http triggering request to json # as flow node input args body = json.loads(request_body.decode('utf-8')) # do custom node process if path_info == '/handle_exec': output = handle_exec(body['variables']) elif path_info == '/handle_awake': output = handle_awake( body['asyncId'], body['async_event_data'], body['variables'] ) else: raise Exception('Invalid path ' + path_info) status = '200 OK' response_headers = [('Content-type', 'text/plain')] start_response(status, response_headers) return [json.dumps(output).encode('utf-8')]Buat file skrip baru bernama
my.pydan salin kode berikut ke dalam filemy.py.
Templat berikut menghasilkan bilangan acak dengan panjang tertentu berdasarkan variabel input random_number_length. Kemudian, alur diarahkan ke cabang even atau odd berdasarkan paritas bilangan tersebut, serta mengeluarkan dua variabel ke alur: random dan type.
import random
# impl: py spi handle_exec
def handle_exec(variables) -> dict:
# translate fun request
random_number_length = variables['random_number_length']
random_number = generate_random_by_length(random_number_length)
print("random generated as " + str(random_number))
if (random_number % 2) == 0:
number_type = "even"
else:
number_type = "odd"
result = {
'success': True,
'message': 'OK',
'await': False,
'outputVariables': {
'random': random_number,
'type': number_type
},
'toBranchCode': number_type
}
return result
# impl: py spi handle_awake
def handle_awake(async_id, async_event_data, variables) -> dict:
return {}
def generate_random_by_length(random_number_length) -> int:
length = int(random_number_length)
start = 10 ** (length - 1)
stop = 10 ** length
print("from " + str(start) + "(inclusive) to " + str(stop) + "(exclusive)")
return random.randrange(start, stop)
Terlepas dari logika kustom Anda, file my.py harus berisi dua fungsi berikut.
Kedua fungsi ini masing-masing menangani pemanggilan alur dan pemrosesan event. Jika Anda telah mengonfigurasi penanganan event untuk komponen Call a Function di Agentic Journey, Anda tidak perlu mengimplementasikan logika penanganan event dalam fungsi Anda.
def handle_exec(variables) -> dictdef handle_awake(async_id, async_event_data, variables) -> dict
Struktur nilai kembalian kedua fungsi bersifat tetap, terlepas dari logika kustom Anda.
success: Menunjukkan apakah pemanggilan fungsi berhasil. Jika diatur ke
false, alur berhenti dengan error.message: Pesan kustom untuk memberikan informasi tambahan.
await: Menunjukkan apakah alur harus menunggu penanganan event selanjutnya. Jika diatur ke
false, alur langsung dilanjutkan menggunakanoutputVariablesdantoBranchCodeyang dikembalikan.outputVariables: Kamus pasangan kunci-nilai yang diteruskan sebagai variabel output ke alur. Anda dapat mereferensikan variabel ini di komponen berikutnya. Kamus ini hanya digunakan ketika
awaitbernilaifalse.toBranchCode: Kode yang menentukan cabang mana yang akan diikuti alur selanjutnya, berdasarkan pengaturan multi-cabang Anda. Kode ini hanya digunakan ketika
awaitbernilaifalse.
result = {
'success': True,
'message': 'OK',
'await': False,
'outputVariables': {
'myVarExample1': 'a',
'myVarExample2': 'b'
},
'toBranchCode': 'example'
}
Setelah mengubah file, klik Deploy.
3. Konfigurasi komponen
Ikuti langkah-langkah berikut untuk mengonfigurasi komponen Call a Function dalam alur Anda.
Prasyarat
Untuk mengonfigurasi komponen ini, akses kanvas journey melalui journey yang sudah ada atau buat journey baru.
Buka kanvas journey yang sudah ada
Pada halaman daftar journey di Agentic Journey, klik Edit di sebelah kanan journey untuk membuka halaman edit kanvas.
Buat journey baru untuk membuka kanvasnya. Untuk informasi lebih lanjut, lihat Use Agentic Journey.
Pada kanvas, klik ikon komponen Call a Function untuk melihat panel konfigurasinya di sebelah kanan.
Di Agentic Journey, pilih node Call a Function (FunctionComputeNode). Panel konfigurasi akan terbuka di sebelah kanan. Variabel yang tersedia mencakup
incomingMessage,wabaId,wabaPhoneNumber,customerPhoneNumber, dancustomerName. Pada bagian HTTP Trigger Settings, masukkan URL dan Region (wajib diisi), serta atur Timeout (seconds). Pada bagian Runtime Settings, Anda dapat memicu node menggunakan webhook atau API, serta aktifkan sakelar pemicu asinkron sesuai kebutuhan. Setelah menyelesaikan konfigurasi, klik Save.Konfigurasi parameter komponen. Untuk detailnya, lihat Configuration Details.
Setelah selesai mengonfigurasi, klik Save. Pada kotak dialog yang muncul, klik Save.
Parameter
Bagian | Parameter | Deskripsi |
Execution Settings | Asynchronous Awakening | Jika diaktifkan, komponen berjalan secara asinkron, memungkinkan alur berhenti sementara dan kemudian "dibangunkan" untuk melanjutkan eksekusi. |
Asynchronous Wait Timeout | Periode timeout untuk penantian asinkron, dalam satuan detik. | |
HTTP Trigger Settings | URL | Untuk mengonfigurasi URL, buka Konsol Function Compute. Di panel navigasi sebelah kiri, pilih . Temukan fungsi Anda dan klik namanya untuk membuka halaman Function Details. Klik tab Trigger dan salin alamat Internet Endpoint. Catatan Setelah memasukkan URL fungsi, klik Authorize ChatApp to Invoke Your Function untuk menyelesaikan otorisasi satu kali. |
Region | Wilayah tempat fungsi Anda dideploy, yang sesuai dengan segmen ketiga dari ARN fungsi Anda. Untuk menemukan ARN, buka Konsol Function Compute. Di panel navigasi sebelah kiri, pilih . Temukan fungsi Anda dan buka halaman Function Details-nya. Klik tab Configuration, lalu klik Copy ARN. Catatan Contohnya, jika ARN yang disalin adalah maka wilayahnya adalah | |
Timeout | Timeout untuk permintaan HTTP, dalam satuan detik. | |
Parameter Settings | - | Jika diperlukan, konfigurasikan parameter input untuk fungsi. Nama parameter harus sesuai dengan parameter yang diharapkan diterima oleh fungsi Anda. Nilainya dapat berupa konstanta atau variabel alur. |
Multi-branching Settings | - | Jika diperlukan, konfigurasikan beberapa cabang untuk output fungsi. Kode cabang harus sesuai dengan nilai |
Response Settings | - | Jika diperlukan, petakan output fungsi ke variabel alur. Nama variabel harus sesuai dengan kunci dalam kamus |