> ## Documentation Index
> Fetch the complete documentation index at: https://yardim.whattalk.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Asistanı güncelle

> Mevcut bir AI asistanının yapılandırmasını güncelleyin

Bu endpoint, mevcut bir AI asistanının yapılandırmasını güncellemenize olanak tanır. Tüm alanlar isteğe bağlıdır - yalnızca güncellemek istediğiniz alanları sağlayın.

### Yol Parametreleri

<ParamField path="id" type="integer" required>
  Güncellenecek asistanın benzersiz tanımlayıcısı
</ParamField>

### İstek Gövdesi

#### Temel Alanlar

<ParamField body="name" type="string">
  Asistanın adı (maks. 255 karakter)
</ParamField>

<ParamField body="voice_id" type="integer">
  Asistan için kullanılacak ses ID'si. Motor modunuz ile uyumlu sesleri almak için `mode` parametresi ile [Get Voices](/api-reference/assistants/get-voices) endpoint'ini kullanın.
</ParamField>

<ParamField body="language_id" type="integer">
  Asistanın dil ID'si. Mevcut dilleri almak için [Get Languages](/api-reference/assistants/get-languages) endpoint'ini kullanın.
</ParamField>

<ParamField body="type" type="string">
  Asistan türü. Seçenekler: `inbound`, `outbound`
</ParamField>

<ParamField body="mode" type="string">
  Motor modu. Seçenekler: `pipeline`, `multimodal`, `dualplex`

  <Warning>
    Modun değiştirilmesi, moda özel ayarları yeni modun varsayılan değerlerine sıfırlar.
  </Warning>
</ParamField>

<ParamField body="timezone" type="string">
  Asistanın saat dilimi (ör. "Europe/Bucharest", "America/New\_York")
</ParamField>

<ParamField body="initial_message" type="string">
  Arama başladığında asistanın söyleyeceği ilk mesaj (maks. 200 karakter)
</ParamField>

<ParamField body="system_prompt" type="string">
  Asistanın davranışını ve kişiliğini tanımlayan sistem istemi
</ParamField>

#### Moda Özel Alanlar

<ParamField body="llm_model_id" type="integer">
  Kullanılacak LLM model ID'si. Yalnızca `pipeline` modu için geçerlidir.

  Mevcut modelleri almak için [Get Models](/api-reference/assistants/get-models) endpoint'ini kullanın.
</ParamField>

<ParamField body="multimodal_model_id" type="integer">
  Multimodal model ID'si. Yalnızca `multimodal` ve `dualplex` modları için geçerlidir.

  Mevcut multimodal modelleri almak için [Get Models](/api-reference/assistants/get-models) endpoint'ini kullanın.
</ParamField>

<ParamField body="chat_llm_fallback_id" type="integer">
  Multimodal/dualplex modlarında araç çağrıları için yedek LLM model ID'si. Kaldırmak için `null` olarak ayarlayın.
</ParamField>

<ParamField body="turn_detection_threshold" type="number">
  Multimodal/dualplex modları için konuşma sırası algılama hassasiyeti (0-1). Otomatik için `null` olarak ayarlayın.
</ParamField>

#### İkincil Diller

<ParamField body="secondary_language_ids" type="integer[]">
  Asistanın konuşabileceği ek dil ID'lerinin dizisi. Mevcut ikincil dilleri değiştirir. Tüm ikincil dilleri kaldırmak için boş bir dizi `[]` gönderin.

  ```json theme={null}
  "secondary_language_ids": [2, 3, 4]
  ```
</ParamField>

#### Bilgi Bankası Ayarları

<ParamField body="knowledgebase_id" type="integer">
  Eklenecek bilgi bankası ID'si. Bilgi bankasını kaldırmak için `null` olarak ayarlayın.
</ParamField>

<ParamField body="knowledgebase_mode" type="string">
  Bilgi bankasının nasıl kullanılacağı. Seçenekler:

  * `function_call` - AI arama yapmak için bir fonksiyon çağırır (multimodal/dualplex için zorunlu)
  * `prompt` - Bilgi isteme enjekte edilir (yalnızca pipeline)
</ParamField>

#### Telefon Numarası

<ParamField body="phone_number_id" type="integer">
  Atanacak telefon numarasının ID'si. Atamayı kaldırmak için `null` olarak ayarlayın. Hesabınıza ait olmalıdır.

  <Warning>
    `inbound` asistanlar için telefon numarası Arayan Kimliği türünde olamaz ve başka bir inbound asistana zaten atanmış olamaz.
  </Warning>
</ParamField>

#### Özel Görüşme İçi Araçlar

<ParamField body="tool_ids" type="integer[]">
  Senkronize edilecek özel görüşme içi araç ID'lerinin dizisi. **Mevcut tüm araç atamalarını değiştirir.** Tüm araçları kaldırmak için boş bir dizi `[]` gönderin. Her araç hesabınıza ait olmalıdır.

  ```json theme={null}
  "tool_ids": [1, 5, 12]
  ```
</ParamField>

#### Yerleşik Araçlar

<ParamField body="tools" type="array">
  Yerleşik araçların dizisi. **Mevcut tüm yerleşik araçları değiştirir.** Tüm araçları kaldırmak için boş bir dizi `[]` gönderin.

  <Expandable title="Araç türleri">
    **call\_transfer** - Aramayı başka bir telefon numarasına aktarır

    * `phone_number` (zorunlu): Aktarılacak telefon numarası
    * `description`: Aramanın ne zaman aktarılacağı
    * `custom`: Doğru ise, AI aktarım numarasını dinamik olarak belirleyebilir
    * `timezone`: Aktarım müsaitliği için saat dilimi
    * `warm_transfer`: Aktarmadan önce müşteriye bir mesaj gönderir (varsayılan: `false`)
    * `warm_transfer_message`: AI'ya aktarmadan önce ne söyleyeceğini bildiren istem (ör. "Tell the customer that the call is being transferred.")

    **warm\_call\_transfer** - Yönetici bilgilendirmeli sıcak aktarım

    * `supervisor_phone` (zorunlu): Sıcak aktarım için aranacak telefon numarası (ör. "+14155552001"). `custom_sip` etkinleştirilmişse, bunun yerine bir SIP adresi veya dahili hat numarasıdır.
    * `outbound_phone_id` (zorunlu): Yöneticiyi aramak için kullanılan telefon numarasının ID'si.
    * `description` (zorunlu): **Ne zaman aktarılacağı** — AI'ın sıcak aktarımı ne zaman başlatması gerektiğini açıklar (ör. "Transfer the call to a human supervisor when the customer requests to speak with a real person.")
    * `custom_sip`: Telefon numarası yerine özel bir SIP adresi veya dahili hat numarası girmek için etkinleştirin (varsayılan: `false`)
    * `caller_id_mode`: Yöneticinin aramayı alırken gördüğü telefon numarası. Seçenekler: `outbound_number` (varsayılan — giden telefon numarasını gösterir), `customer_number` (arayanın numarasını gösterir), `custom` (özel bir numara gösterir)
    * `custom_caller_id`: Yöneticiye gösterilen özel telefon numarası. Yalnızca `caller_id_mode` değeri `custom` olduğunda kullanılır.
    * `hold_music`: Arayan beklemedeyken çalınan ses. Seçenekler: `hold_music` (varsayılan — varsayılan bekleme müziğini çalar), `none` (sessizlik, müzik yok)
    * `hold_music_volume`: Bekleme müziği ses seviyesi, 0-100 (varsayılan: `80`)
    * `hold_message`: Arayanı beklemeye almadan önce söylenen mesaj (varsayılan: "Please hold while I connect you with a supervisor.")
    * `summary_instructions`: AI'ın yöneticiyi arama hakkında nasıl bilgilendirmesi gerektiğine dair talimatlar (varsayılan: "Introduce the conversation from your perspective:\n- WHO is calling (name, company if mentioned)\n- WHY they called (their goal or problem)\n- WHY a human is needed at this point\n\nKeep it brief (2-3 sentences).")
    * `briefing_initial_message`: AI'ın yönetici cevapladığında söylediği ilk mesaj (varsayılan: "Hello! I have a caller on the line who needs your assistance. May I brief you on the situation?")
    * `connected_message`: Yönetici bağlandıktan sonra arayana söylenen mesaj (varsayılan: "You are now connected with a supervisor. I'll leave you to it.")

    **end\_call** - Aramayı programlı olarak sonlandırır

    * `description`: AI'ın aramayı ne zaman sonlandırması gerektiği

    **dtmf\_input** - DTMF tonları gönderir (tuş takımı girişi)

    * `description`: DTMF girişinin ne zaman kullanılacağı (IVR navigasyonu için)

    **collect\_keypad** - Arayandan tuş takımı girişi toplar

    * `timeout`: Giriş için bekleme süresi (saniye), 1-30 (varsayılan: 5)
    * `stop_key`: Girişi sonlandıran tuş. Seçenekler: `#` (varsayılan), `*`

    **calendar\_integration** - Cal.com üzerinden randevu planlar

    * `calcom_api_key` (zorunlu): Cal.com API anahtarınız
    * `calcom_event_slug` (zorunlu): Cal.com'dan etkinlik türü slug'ı
    * `calcom_team_slug`: Etkinlik bir Cal.com takımına aitse takım slug'ı
    * `calcom_endpoint`: Cal.com API bölgesi. Seçenekler: `us` (varsayılan — `https://api.cal.com`), `eu` (`https://api.cal.eu`), `custom` (`calcom_custom_endpoint` kullanır)
    * `calcom_custom_endpoint`: Özel Cal.com API temel URL'si. Yalnızca `calcom_endpoint` değeri `custom` olduğunda kullanılır (ör. `https://my-calcom-instance.com`).
    * `calcom_booking_fields`: Etkinlik için özel rezervasyon alanları dizisi. Her alanın özellikleri:
      * `slug` (zorunlu): Alan tanımlayıcısı
      * `type` (zorunlu): Alan türü (ör. "text", "email", "phone", "select")
      * `label` (zorunlu): Görüntüleme etiketi
      * `required`: Alanın zorunlu olup olmadığı (varsayılan: `false`)
      * `options`: Seçim alanları için seçenek dizisi
    * `description`: Randevu planlamanın ne zaman teklif edileceği
  </Expandable>

  ```json theme={null}
  "tools": [
    {
      "type": "dtmf_input",
      "description": "Navigate IVR when needed"
    },
    {
      "type": "warm_call_transfer",
      "supervisor_phone": "+1234567890",
      "outbound_phone_id": 7,
      "description": "Transfer the call to a human supervisor when the customer requests to speak with a real person.",
      "custom_sip": false,
      "caller_id_mode": "outbound_number",
      "hold_music": "hold_music",
      "hold_music_volume": 80,
      "hold_message": "Please hold while I connect you with a supervisor.",
      "summary_instructions": "Introduce the conversation from your perspective:\n- WHO is calling (name, company if mentioned)\n- WHY they called (their goal or problem)\n- WHY a human is needed at this point\n\nKeep it brief (2-3 sentences).",
      "briefing_initial_message": "Hello! I have a caller on the line who needs your assistance. May I brief you on the situation?",
      "connected_message": "You are now connected with a supervisor. I'll leave you to it."
    },
    {
      "type": "collect_keypad",
      "timeout": 5,
      "stop_key": "#"
    },
    {
      "type": "end_call",
      "description": "End call when done"
    }
  ]
  ```
</ParamField>

#### Ses ve TTS Ayarları

<ParamField body="tts_emotion_enabled" type="boolean">
  Duygusal metin-konuşma sentezinin etkinleştirilip etkinleştirilmeyeceği
</ParamField>

<ParamField body="voice_stability" type="number">
  Ses kararlılık ayarı (0-1). Yüksek = daha tutarlı ses
</ParamField>

<ParamField body="voice_similarity" type="number">
  Ses benzerlik ayarı (0-1). Yüksek = orijinal sese daha yakın
</ParamField>

<ParamField body="speech_speed" type="number">
  Konuşma hızı çarpanı (0.7-1.2)
</ParamField>

<ParamField body="llm_temperature" type="number">
  LLM sıcaklık ayarı (0-1). Düşük = daha belirleyici
</ParamField>

<ParamField body="synthesizer_provider_id" type="integer">
  Özel TTS sağlayıcı ID'si. Dil varsayılanını kullanmak için `null` olarak ayarlayın. Mevcut sağlayıcıları keşfetmek için [Get Synthesizer Providers](/api-reference/assistants/get-synthesizer-providers) endpoint'ini kullanın.
</ParamField>

<ParamField body="transcriber_provider_id" type="integer">
  Özel STT sağlayıcı ID'si. Yalnızca pipeline modu. Dil varsayılanını kullanmak için `null` olarak ayarlayın. Mevcut sağlayıcıları keşfetmek için [Get Transcriber Providers](/api-reference/assistants/get-transcriber-providers) endpoint'ini kullanın.
</ParamField>

#### Arama Davranış Ayarları

<ParamField body="allow_interruptions" type="boolean">
  Arayan kişinin sözünü kesmesine izin verilip verilmeyeceği.

  <Warning>`multimodal` ve `dualplex` modları için devre dışı bırakılamaz.</Warning>
</ParamField>

<ParamField body="fillers" type="boolean">
  İşleme sırasında dolgu sesi kullanılıp kullanılmayacağı.

  <Warning>Yalnızca `pipeline` modu için kullanılabilir.</Warning>
</ParamField>

<ParamField body="filler_config" type="object">
  Kategoriye göre özel dolgu kelime profilleri. Mevcut dolgu yapılandırmasını değiştirir. Her kategori kısa ifadelerden oluşan bir dizidir.

  * `positive`: Olumlu/onaylayıcı yanıtlar için dolgu kelimeleri
  * `negative`: Olumsuz/nötr yanıtlar için dolgu kelimeleri
  * `question`: Bir soru işlenirken kullanılan dolgu kelimeleri
  * `neutral`: Nötr onay için dolgu kelimeleri

  ```json theme={null}
  "filler_config": {
    "positive": ["Great!", "Perfect!"],
    "negative": ["Hmm.", "I see."],
    "question": ["Good question.", "Let me check."],
    "neutral": ["Ok.", "Noted."]
  }
  ```
</ParamField>

<ParamField body="record" type="boolean">
  Aramanın kaydedilip kaydedilmeyeceği
</ParamField>

<ParamField body="enable_noise_cancellation" type="boolean">
  Gürültü engellemenin etkinleştirilip etkinleştirilmeyeceği
</ParamField>

<ParamField body="wait_for_customer" type="boolean">
  Doğru ise, asistan müşterinin önce konuşmasını bekler
</ParamField>

#### Zamanlama Ayarları

<ParamField body="max_duration" type="integer">
  Saniye cinsinden maksimum arama süresi (20-1200)
</ParamField>

<ParamField body="max_silence_duration" type="integer">
  Yeniden etkileşimden önce saniye cinsinden maksimum sessizlik süresi (1-360)
</ParamField>

<ParamField body="max_initial_silence_duration" type="integer">
  Aramayı sonlandırmadan önce arama başlangıcındaki maksimum sessizlik (1-120 saniye). Devre dışı bırakmak için `null` olarak ayarlayın.
</ParamField>

<ParamField body="ringing_time" type="integer">
  Vazgeçmeden önce maksimum çalma süresi (1-60 saniye)
</ParamField>

#### Yeniden Etkileşim Ayarları

<ParamField body="reengagement_interval" type="integer">
  Saniye cinsinden yeniden etkileşim aralığı (7-600)
</ParamField>

<ParamField body="reengagement_prompt" type="string">
  Yeniden etkileşim mesajları için özel istem (maks. 1000 karakter). Varsayılanı kullanmak için `null` olarak ayarlayın.
</ParamField>

#### Sesli Mesaj Ayarları

<ParamField body="end_call_on_voicemail" type="boolean">
  Sesli mesaj algılandığında aramanın sonlandırılıp sonlandırılmayacağı
</ParamField>

<ParamField body="voice_mail_message" type="string">
  Kapatmadan önce sesli mesaja bırakılacak mesaj (maks. 1000 karakter). Devre dışı bırakmak için `null` olarak ayarlayın.
</ParamField>

#### Uç Nokta Algılama

<ParamField body="endpoint_type" type="string">
  Ses aktivite algılama türü. Seçenekler: `vad`, `ai`
</ParamField>

<ParamField body="endpoint_sensitivity" type="number">
  Uç nokta hassasiyet seviyesi (0-5)
</ParamField>

<ParamField body="interrupt_sensitivity" type="number">
  Kesinti hassasiyet seviyesi (0-5)
</ParamField>

<ParamField body="min_interrupt_words" type="integer">
  Kesintiye izin verilmeden önce minimum kelime sayısı (0-10). Devre dışı bırakmak için `null` olarak ayarlayın.
</ParamField>

#### Ortam Sesi

<ParamField body="ambient_sound" type="string">
  Arka plan ortam sesi. Seçenekler: `off`, `office`, `city`, `forest`, `crowded_room`, `cafe`, `nature`
</ParamField>

<ParamField body="ambient_sound_volume" type="number">
  Ortam sesi ses seviyesi (0-1)
</ParamField>

#### Webhook Yapılandırması

<ParamField body="is_webhook_active" type="boolean">
  Webhook bildirimlerinin etkin olup olmadığı
</ParamField>

<ParamField body="webhook_url" type="string">
  Arama sonrası bildirimler için webhook URL'si. Kaldırmak için `null` olarak ayarlayın.
</ParamField>

<ParamField body="send_webhook_only_on_completed" type="boolean">
  Webhook'ların yalnızca tamamlanan aramalarda gönderilip gönderilmeyeceği (başarısız/cevaplanmayan aramalar hariç)
</ParamField>

<ParamField body="include_recording_in_webhook" type="boolean">
  Webhook yüküne kayıt URL'sinin dahil edilip edilmeyeceği
</ParamField>

#### Arama Sonrası Değerlendirme

<ParamField body="post_call_evaluation" type="boolean">
  AI arama sonrası değerlendirmenin etkinleştirilip etkinleştirilmeyeceği
</ParamField>

<ParamField body="post_call_schema" type="array">
  Arama sonrası veri çıkarma için şema tanımı. Mevcut şemayı değiştirir.

  <Expandable title="post_call_schema properties">
    <ParamField body="name" type="string" required>
      Alan adı (3-16 karakter, küçük harf, yalnızca alfanümerik ve alt çizgi)
    </ParamField>

    <ParamField body="type" type="string" required>
      Veri türü. Seçenekler: `string`, `number`, `bool`
    </ParamField>

    <ParamField body="description" type="string" required>
      Bu alanın neyi temsil ettiğinin açıklaması (3-255 karakter)
    </ParamField>
  </Expandable>
</ParamField>

#### Değişkenler

<ParamField body="variables" type="object">
  Özel değişkenlerin anahtar-değer çiftleri. **Mevcut tüm değişkenleri değiştirir.**

  ```json theme={null}
  "variables": {
    "company_name": "Acme Corp",
    "product": "Premium Widget"
  }
  ```
</ParamField>

#### Görüşme Sona Erme Ayarları

<ParamField body="conversation_inactivity_timeout" type="integer">
  Görüşmenin sona ermiş sayılmasından önceki sohbet hareketsizlik süresi (dakika) (1-1440). Devre dışı bırakmak için `null` olarak ayarlayın. Varsayılan: `30`
</ParamField>

<ParamField body="conversation_ended_retrigger" type="boolean">
  Hareketsizlik nedeniyle sona erdikten sonra görüşmenin yeniden tetiklenmesine izin verilip verilmeyeceği
</ParamField>

<ParamField body="conversation_ended_webhook_url" type="string">
  Sohbet görüşmesi hareketsizlik nedeniyle sona erdiğinde çağrılan webhook URL'si. Kaldırmak için `null` olarak ayarlayın. Ana arama webhook'undan bağımsızdır.
</ParamField>

***

## Örnek İstekler

### Temel Ayarları Güncelle

```json theme={null}
{
  "name": "Updated Assistant Name",
  "initial_message": "Hello! How may I assist you?",
  "max_duration": 900
}
```

### Multimodal Moda Geç

```json theme={null}
{
  "mode": "multimodal",
  "voice_id": 41,
  "multimodal_model_id": 1,
  "chat_llm_fallback_id": 2,
  "knowledgebase_mode": "function_call"
}
```

### Araçları ve Bilgi Bankasını Güncelle

```json theme={null}
{
  "tool_ids": [1, 5, 12],
  "knowledgebase_id": 3,
  "knowledgebase_mode": "prompt"
}
```

### Yeniden Etkileşim ve Sesli Mesajı Güncelle

```json theme={null}
{
  "reengagement_interval": 15,
  "reengagement_prompt": "Are you still there? I'm here to help.",
  "end_call_on_voicemail": true,
  "voice_mail_message": "Hello, please call us back at your convenience."
}
```

### İsteğe Bağlı Ayarları Kaldır

```json theme={null}
{
  "phone_number_id": null,
  "webhook_url": null,
  "tool_ids": [],
  "secondary_language_ids": []
}
```

***

## Yanıt

<ResponseField name="message" type="string">
  Asistan güncellemesini onaylayan başarı mesajı
</ResponseField>

<ResponseField name="data" type="object">
  <Expandable title="properties">
    <ResponseField name="id" type="integer">
      Güncellenen asistanın benzersiz tanımlayıcısı
    </ResponseField>

    <ResponseField name="name" type="string">
      Asistanın adı
    </ResponseField>

    <ResponseField name="status" type="string">
      Asistanın mevcut durumu
    </ResponseField>

    <ResponseField name="type" type="string">
      Türü (`inbound` veya `outbound`)
    </ResponseField>

    <ResponseField name="mode" type="string">
      Motor modu (`pipeline`, `multimodal` veya `dualplex`)
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseExample>
  ```json 200 Başarılı Yanıt theme={null}
  {
    "message": "Assistant updated successfully",
    "data": {
      "id": 789,
      "name": "Updated Sales Assistant",
      "status": "active",
      "type": "outbound",
      "mode": "pipeline"
    }
  }
  ```

  ```json 404 Bulunamadı theme={null}
  {
    "message": "Assistant not found"
  }
  ```

  ```json 422 Doğrulama Hatası theme={null}
  {
    "message": "Validation failed",
    "errors": {
      "speech_speed": ["The speech speed must be between 0.7 and 1.2."],
      "voice_id": ["The selected voice is not compatible with the chosen engine type."],
      "allow_interruptions": ["Interruptions cannot be disabled in multimodal or dualplex mode."]
    }
  }
  ```
</ResponseExample>

***

## Notlar

* Yalnızca istek gövdesinde sağladığınız alanlar güncellenecektir
* İsteğe bağlı alanları kaldırmak için açıkça `null` olarak ayarlayın
* Dizileri temizlemek (araçlar, ikincil diller) için boş bir dizi `[]` gönderin
* Asistan, kimlik doğrulaması yapılmış kullanıcıya ait olmalıdır
* Uyumlu sesleri almak için `mode` parametresi ile Get Voices endpoint'ini kullanın
* Multimodal/dualplex modları için `knowledgebase_mode` değeri `function_call` olmalıdır
* Multimodal/dualplex modları için `allow_interruptions` devre dışı bırakılamaz
* Modun değiştirilmesi moda özel ayarları sıfırlar (LLM modeli, multimodal model, sağlayıcılar)
