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

# 변수 추출

> 통화 중에 고객이 말하거나 키패드로 누른 값을 변수에 저장해 프롬프트와 다른 도구에서 바로 쓸 수 있어요.

변수 추출 도구는 대화 중에 고객이 말하거나 키패드로 누른 값을 변수에 저장해요. 저장한 다음 응답부터 프롬프트, 도구, 메뉴얼의 `{{변수명}}` 자리에 그 값이 들어가요.

<img src="https://mintcdn.com/fleek/sRb7odmQgZLXg5_U/images/screens/agent-build/tools/builtin/extract-variables/settings.webp?fit=max&auto=format&n=sRb7odmQgZLXg5_U&q=85&s=e9ae44c11b027439a66006c833f22f62" alt="변수 추출 설정 창의 함수 이름, 함수 설명, 문자열 전화번호와 숫자 인원수 변수 정의" style={{ borderRadius: "0.5rem", maxWidth: "480px", margin: "0 auto" }} width="448" height="819" data-path="images/screens/agent-build/tools/builtin/extract-variables/settings.webp" />

변수 추출은 프롬프트 에이전트에서 써요. 플로우 에이전트에서는 [추출 노드](/docs/build/flow/nodes/extraction-node)를, 통화가 끝난 뒤 값을 모으려면 [통화 정보 추출](/docs/build/post-call/extraction)을 쓰세요.

## 언제 사용하나요

* **키패드로 받은 번호로 고객을 조회할 때**: 고객이 누른 휴대폰 번호를 `{{전화번호}}`로 저장하고, API 도구가 그 번호로 고객 정보를 찾아요.
* **한 번 들은 값을 여러 곳에서 쓸 때**: 회원번호나 예약 인원을 저장해 두면 조회 API, 문자 본문, 다음 안내가 같은 값을 써요.
* **대화 중에 알게 된 값을 기록으로 남길 때**: 저장한 값이 통화 기록과 웹훅에 동적 변수로 함께 담겨요.

## 변수 추출 추가하기

<Steps>
  <Step title="도구 추가하고 함수 이름 정하기">
    에이전트 설정의 **도구**에서 **추가**를 누르고 **변수 추출**을 고르세요. **함수 이름**은 `extract_variables`로 두세요. 도구를 여럿 두려면 `save_member_phone`처럼 저장할 값이 드러나게 바꾸고, 프롬프트에도 같은 이름을 쓰세요.
  </Step>

  <Step title="도구를 사용할 상황 적기">
    **함수 설명**에 언제 부를지 적으세요. 예: `고객이 휴대폰 번호를 말하거나 키패드로 누르면 호출합니다.` 비워 두면 기본 설명을 써요.
  </Step>

  <Step title="저장할 변수 정하기">
    **변수 정의**에서 변수마다 타입(**문자열**, **숫자**, **불리언**), 변수명, 설명을 정하세요. 변수명은 글자로 시작해 글자, 숫자, 밑줄로 40자까지 지을 수 있고 한글도 돼요. 한 도구 안에서 겹치는 이름과 `call_id` 같은 [시스템 변수](/docs/build/variables/system-variables) 이름은 쓸 수 없어요. 설명에는 저장할 값과 형식을 적으세요. 예: `고객이 말하거나 키패드로 누른 휴대폰 번호. 숫자만`
  </Step>

  <Step title="프롬프트에 호출 조건 적기">
    값을 쓰는 도구보다 변수 추출을 먼저 부르도록 순서를 적고, 값을 쓸 곳에 `{{변수명}}`을 넣으세요. 아래는 저장한 번호로 [API 도구](/docs/build/tools/api)가 고객을 조회하는 예시예요.

    ```text theme={null}
    고객이 휴대폰 번호를 말하거나 키패드로 누르면
    먼저 extract_variables 도구로 전화번호를 저장하세요.
    저장한 뒤 lookup_customer 도구로 고객 정보를 조회하세요.
    ```

    API 도구의 **API 엔드포인트**는 `https://api.example.com/lookup?tel={{전화번호}}`처럼 쓰면 돼요.
  </Step>
</Steps>

### 메뉴얼에서 추가하기

메뉴얼 본문에서 `/`를 누르고 **도구**에서 **변수 추출**을 고르면 같은 설정 창이 열려요. 이렇게 만든 도구는 그 메뉴얼에 속해서, 에이전트가 그 메뉴얼을 불러왔을 때 써요. 본문 단계에 언제 저장하고 어느 도구에 쓰는지 적으세요.

<img src="https://mintcdn.com/fleek/sRb7odmQgZLXg5_U/images/screens/agent-build/tools/builtin/extract-variables/manual.webp?fit=max&auto=format&n=sRb7odmQgZLXg5_U&q=85&s=4c6da17160f56becf24f71d0bbbb5cab" alt="회원 조회 메뉴얼 본문의 save_member_phone 변수 추출 참조와 lookup_customer API 도구 참조" style={{ borderRadius: "0.5rem", maxWidth: "896px", margin: "0 auto" }} width="752" height="304" data-path="images/screens/agent-build/tools/builtin/extract-variables/manual.webp" />

## 통화에서 일어나는 일

* **저장한 다음 응답부터 값이 쓰여요.** 프롬프트, 메뉴얼 본문, API 도구, 문자 본문, 통화 전환 문구에 들어가요. 채팅에서는 같은 채팅의 다음 입력에도 이어져요.
* **값을 못 찾으면 이전 값을 그대로 둬요.** 타입에 맞지 않는 값도 저장하지 않아요.
* **아직 저장하지 않은 변수는 쓰는 자리마다 달라요.** 프롬프트에는 `{{변수명}}` 글자가 그대로 남고, 고객에게 말하거나 보내는 문구에서는 빈 값이 돼요. API 도구의 URL에 있으면 요청을 보내지 않고 실패해요.
* **함수 설명과 전환 대상에 쓴 변수는 응대를 시작할 때의 값을 써요.** 통화 중에 저장해도 바뀌지 않아요.

## 문제가 생겼을 때

<AccordionGroup>
  <Accordion title="고객이 값을 말해도 저장하지 않아요">
    함수 설명과 프롬프트에 부를 상황을 적고, 프롬프트에는 설정한 함수 이름을 쓰세요. 변수 설명에 저장할 값과 형식이 구체적이어야 에이전트가 값을 찾아 저장해요.
  </Accordion>

  <Accordion title="API 도구가 변수가 없다는 오류로 실패해요">
    변수 추출을 먼저 부른 뒤 API 도구를 부르도록 프롬프트에 순서를 적으세요. URL에 쓴 변수가 아직 저장되지 않았으면 요청을 보내지 않아요.
  </Accordion>

  <Accordion title="저장한 값이 프롬프트에 들어가지 않아요">
    프롬프트에 쓴 변수명이 변수 정의의 이름과 대소문자까지 같은지 확인하세요. 값은 저장한 다음 응답부터 들어가고, 이름이 다르면 변수명 글자가 그대로 남아요.
  </Accordion>
</AccordionGroup>

## 관련 문서

* [동적 변수](/docs/build/variables/dynamic-variables): 변수 문법과 통화를 시작할 때 값 넘기기
* [API 도구](/docs/build/tools/api): 저장한 값으로 자체 시스템 조회하기
* [DTMF 수신](/docs/build/conversation/dtmf): 고객의 키패드 입력 받기
* [도구 개요](/docs/build/tools/overview): 빌트인 도구 목록, 공통 실행 설정, API로 설정하기


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.