Bir Connector ile Bir Aracı Bağlayın ve Yürütün
Bu öğreticide bir Slack connector (bağlayıcı) örneği kuracak, bir bot token'ı depolayacak, mevcut araçları senkronize edecek, send_message aracını yürütecek ve yürütme geçmişini inceleyeceksiniz. Sonuç olarak çalışma alanınızdaki AI ajanlarının çağırabileceği çalışan bir connector'a sahip olacaksınız.
Önkoşullar
- Geçerli bir erişim belirteci olan bir Chainabit hesabı
- Terminalinizde
curl'un mevcut olması - Bir Slack çalışma alanı ve bir Slack Bot Token (
xoxb-...ile başlar)
Ortam değişkenlerinizi ayarlayın:
export BASE="https://api.chainabit.com/api/v1"
export TOKEN="your-access-token"
export SLACK_BOT_TOKEN="xoxb-..."Connector İş Akışı
Adım 1: Mevcut Connector Tanımlarına Göz Atın
Slack connector anahtarını bulmak için mevcut connector tanımlarını listeleyin:
curl "https://api.chainabit.com/api/v1/connectors?category=communication" \
-H "Authorization: Bearer $TOKEN"const res = await fetch(`https://api.chainabit.com/api/v1/connectors?category=communication`, {
headers: { Authorization: `Bearer ${TOKEN}` },
});
const { data } = await res.json();
console.log(data.map((c) => c.key));import requests
res = requests.get(
f"{BASE}/connectors",
params={"category": "communication"},
headers={"Authorization": f"Bearer {TOKEN}"},
)
data = res.json()["data"]
print([c["key"] for c in data])Yanıt alıntısı:
{
"data": [
{
"key": "slack",
"displayName": "Slack",
"category": "communication",
"authMethod": "api_key",
"isActive": true
},
{
"key": "gmail",
"displayName": "Gmail",
"category": "communication",
"authMethod": "oauth2",
"isActive": true
}
]
}authMethod alanına dikkat edin. Slack, api_key destekler, bu da bir tarayıcı yönlendirmesi olmadan kimlik doğrulaması yapabileceğiniz anlamına gelir. Sonraki adım için anahtar "slack" olacaktır.
Adım 2: Bir Connector Örneği Oluşturun
Örnek, bir connector'ın çalışma alanına özel bir kurulumudur. Bir çalışma alanında birden fazla Slack örneği olabilir:
curl -s -X POST "https://api.chainabit.com/api/v1/connectors/instances" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"connectorKey": "slack",
"displayName": "Team Slack"
}'const res = await fetch(`https://api.chainabit.com/api/v1/connectors/instances`, {
method: 'POST',
headers: {
Authorization: `Bearer ${TOKEN}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
connectorKey: 'slack',
displayName: 'Team Slack',
}),
});
const { data } = await res.json();
console.log(data.id, data.status); // "inst_abc123", "pending_auth"res = requests.post(
f"{BASE}/connectors/instances",
headers={"Authorization": f"Bearer {TOKEN}"},
json={"connectorKey": "slack", "displayName": "Team Slack"},
)
data = res.json()["data"]
print(data["id"], data["status"]) # "inst_abc123", "pending_auth"Yanıt:
{
"data": {
"id": "inst_abc123",
"connectorKey": "slack",
"displayName": "Team Slack",
"status": "pending_auth",
"enabled": true,
"config": {},
"lastHealthCheck": null,
"healthMessage": null,
"createdAt": "2026-03-23T10:00:00Z",
"updatedAt": "2026-03-23T10:00:00Z"
}
}Örnek, status: "pending_auth" durumu ile başlar. Örnek ID'sini kaydedin:
export INSTANCE_ID="inst_abc123"Adım 3: Kimlik Bilgilerini Depolayın
Slack bot token'ını depolayın. Kimlik bilgileri beklerken şifrelenir ve hiçbir zaman API yanıtlarında döndürülmez:
curl -s -X POST "https://api.chainabit.com/api/v1/connectors/instances/$INSTANCE_ID/credentials" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d "{
\"credType\": \"api_key\",
\"credentials\": {
\"apiKey\": \"$SLACK_BOT_TOKEN\"
}
}"const res = await fetch(
`https://api.chainabit.com/api/v1/connectors/instances/${INSTANCE_ID}/credentials`,
{
method: 'POST',
headers: {
Authorization: `Bearer ${TOKEN}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
credType: 'api_key',
credentials: { apiKey: process.env.SLACK_BOT_TOKEN },
}),
},
);
const { data } = await res.json();
console.log(data.stored); // trueimport os
res = requests.post(
f"{BASE}/connectors/instances/{INSTANCE_ID}/credentials",
headers={"Authorization": f"Bearer {TOKEN}"},
json={
"credType": "api_key",
"credentials": {"apiKey": os.environ["SLACK_BOT_TOKEN"]},
},
)
data = res.json()["data"]
print(data["stored"]) # TrueYanıt:
{
"data": {
"stored": true
}
}Kimlik bilgileri salt yazılırdır.
GET /connectors/instances/:id/credentials/statusüzerinden kimlik bilgilerinin depolanıp depolanmadığını kontrol edebilirsiniz, ancak değerleri API üzerinden hiçbir zaman okunamaz.
Adım 4: Bağlantıyı Test Edin
Bot token'ının çalıştığını ve Slack'e ulaşılabildiğini doğrulamak için bir sağlık denetimi gönderin:
curl -s -X POST "https://api.chainabit.com/api/v1/connectors/instances/$INSTANCE_ID/test" \
-H "Authorization: Bearer $TOKEN"const res = await fetch(
`https://api.chainabit.com/api/v1/connectors/instances/${INSTANCE_ID}/test`,
{
method: 'POST',
headers: { Authorization: `Bearer ${TOKEN}` },
},
);
const { data } = await res.json();
if (!data.healthy) throw new Error(data.message);
console.log(`Connected (${data.latencyMs}ms)`);res = requests.post(
f"{BASE}/connectors/instances/{INSTANCE_ID}/test",
headers={"Authorization": f"Bearer {TOKEN}"},
)
data = res.json()["data"]
if not data["healthy"]:
raise RuntimeError(data["message"])
print(f"Connected ({data['latencyMs']}ms)")Yanıt:
{
"data": {
"healthy": true,
"message": "Connection successful",
"latencyMs": 187
}
}Eğer healthy değeri false ise, bot token'ınızın xoxb- ile başladığını ve botun Slack çalışma alanınızda kurulu olduğunu kontrol edin.
Adım 5: Araçları Senkronize Edin ve Listeleyin
Slack adaptörü tarafından sunulan mevcut araçları çekin, ardından bunları listeleyin:
curl -s -X POST "https://api.chainabit.com/api/v1/connectors/instances/$INSTANCE_ID/sync-tools" \
-H "Authorization: Bearer $TOKEN"curl -s "https://api.chainabit.com/api/v1/connectors/instances/$INSTANCE_ID/tools" \
-H "Authorization: Bearer $TOKEN"Araçları listeleme yanıtı:
{
"data": [
{
"id": "tool_abc123",
"connectorKey": "slack",
"toolKey": "send_message",
"displayName": "Send Message",
"description": "Send a message to a Slack channel or user",
"inputSchema": {
"type": "object",
"properties": {
"channel": { "type": "string", "description": "Channel name or ID" },
"text": { "type": "string", "description": "Message content" }
},
"required": ["channel", "text"]
},
"isActive": true,
"source": "auto_discovered"
}
]
}send_message aracı için araç ID'sini kaydedin:
export TOOL_ID="tool_abc123"Adım 6: Bir Aracı Yürütün
Bir Slack kanalına gönderi yapmak için send_message aracını çağırın. Girdi, aracın inputSchema'sına karşı doğrulanır:
curl -s -X POST "https://api.chainabit.com/api/v1/connectors/instances/$INSTANCE_ID/tools/$TOOL_ID/execute" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"input": {
"channel": "#general",
"text": "Hello from Chainabit!"
}
}'const res = await fetch(
`https://api.chainabit.com/api/v1/connectors/instances/${INSTANCE_ID}/tools/${TOOL_ID}/execute`,
{
method: 'POST',
headers: {
Authorization: `Bearer ${TOKEN}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
input: { channel: '#general', text: 'Hello from Chainabit!' },
}),
},
);
const { data } = await res.json();
if (data.success) {
console.log('Message sent:', data.output);
} else {
console.error('Tool error:', data.error);
}res = requests.post(
f"{BASE}/connectors/instances/{INSTANCE_ID}/tools/{TOOL_ID}/execute",
headers={"Authorization": f"Bearer {TOKEN}"},
json={"input": {"channel": "#general", "text": "Hello from Chainabit!"}},
)
data = res.json()["data"]
if data["success"]:
print("Message sent:", data["output"])
else:
print("Tool error:", data["error"])Başarılı olduğunda yanıt:
{
"data": {
"success": true,
"output": {
"ok": true,
"channel": "C01234567",
"ts": "1711234567.000100"
},
"error": null,
"httpStatus": 200,
"durationMs": 342
}
}Yaygın hatalar
| Hata | Neden | Çözüm |
|---|---|---|
channel_not_found | #channel mevcut değil veya bot üye değil | Bot'u kanala ekleyin |
No credentials configured | Adım 3 atlandı veya kimlik bilgileri silindi | Adım 3'ü tekrar çalıştırın |
Tool is disabled on this instance | Araçta isActive: false | Aracı yeniden etkinleştirmek için PATCH isteği atın |
Adım 7: Yürütme Geçmişini İnceleyin
Her araç yürütme işlemi günlüğe kaydedilir. Örneğiniz için günlüğü alın:
curl -s "https://api.chainabit.com/api/v1/connectors/instances/$INSTANCE_ID/executions?limit=5" \
-H "Authorization: Bearer $TOKEN"Yanıt alıntısı:
{
"data": [
{
"id": "exec_01HQZ...",
"toolKey": "send_message",
"success": true,
"durationMs": 342,
"executedAt": "2026-03-23T10:15:00Z"
}
]
}Özet
Bu öğreticide şunları yaptınız:
slackanahtarını ve kimlik doğrulama yöntemini onaylamak için connector tanımlarına göz attınız- Bir connector örneği oluşturdunuz (
pending_autholarak başlar) - Bir API anahtarı kimlik bilgisi depoladınız (salt yazılır, beklerken şifrelenir)
- Token'ın geçerli olduğunu onaylamak için bağlantıyı test ettiniz
- Slack adaptörü tarafından sunulan araçları senkronize edip listelediniz
- Kanal ve metin girdisiyle
send_messagearacını yürüttünüz - Yürütme geçmişi günlüğünü incelediniz
Sonraki Adımlar
- Tüm mevcut uç noktalar için Connectors API Reference
- Desteklenen tüm connector'lara göz atmak için Connector Catalog
- Connector araçlarını çağıran zincirleri (iş akışlarını) çalıştırmak için Chain Triggers