| Studio Interface 목차 |
| 1. Explorer 2. Agents 3. Library 4. Hooks 5. Workflows 6. Variables 7. Knowledge Base 8. Tables 9. Nodes 10. Emulator 11. Inspector 12. Debugger, Logs & JSON 13. Botpress Hub 14. Keyboard Shortcuts 15. Chatbot Settings 16. Studio Preferences 17. Import & Export |

컴퓨터 용어에서 Workflow는 작업을 완료하기 위해 수행해야 하는 단계의 순서를 의미합니다. Workflow는 일반적으로 프로세스, 워크플로, 작업 흐름 또는 작업 순서라고도 합니다.(출처 : bard)
Workflow는 다양한 작업을 자동화하고 효율성을 개선하는 데 사용할 수 있습니다. 예를 들어, 고객 서비스 워크플로는 고객의 요청을 처리하는 단계를 정의할 수 있습니다. 생산 워크플로는 제품을 제조하는 단계를 정의할 수 있습니다.
Workflow는 일반적으로 다음과 같은 요소로 구성됩니다.
흐름을 사용하면 복잡한 챗봇을 여러 개의 작은 흐름으로 나눌 수 있습니다. 챗봇을 여러 흐름으로 나누면 유지 관리가 더 쉬워지며, 다른 흐름이나 다른 챗봇을 구축할 때 이러한 흐름을 재사용할 수 있습니다.
워크플로는 항상 진입 노드(Entry Node)에서 시작됩니다. 각 대화가 시작될 때 전역 주제의 기본 흐름에 대한 시작 노드가 가장 먼저 실행됩니다. 대화가 노드에 도달하면 Botpress는 활성 노드의 명령을 대기열에 추가하고 노드에 추가된 순서대로 실행합니다.(A workflow always starts at its Entry Node At the beginning of each conversation, the Start Node of the Main flow of the Global Topic is the first to be executed. When the conversation reaches a node, Botpress will queue the active node’s instructions and execute them in the order they were added to the node.)
흐름은 기본적으로 이벤트 기반이며 차단되지 않습니다. 즉, 기다려야 할 때까지 모든 노드와 명령이 실행됩니다.(The flow is event-based and non-blocking by default, meaning it will execute all the nodes and instructions until it needs to wait)
즉, 일단 진입 노드(Entry Node)가 처리되면 흐름은 흐름의 맨 끝에 도달하거나 노드가 사용자 입력을 “대기”(Capture Information 중 Wait for user input)해야 할 때까지 흐름의 다음 노드로 계속 진행됩니다.
Botpress의 글로벌 흐름은 챗봇 기능의 필수 구성 요소이므로 삭제할 수 없습니다. 이러한 흐름은 챗봇의 동작과 상호 작용의 다양한 중요한 측면을 처리하기 위한 기반 역할을 합니다.
Global Flows(전반적인 작업 흐름)는 삭제할 수는 없지만 특정 요구 사항에 맞게 수정하고 사용자 지정할 수 있습니다. 새 작업을 추가하고, 워크플로 논리를 조정하고, 기존 글로벌 흐름 내에 추가 기능을 통합할 수 있습니다. 이를 통해 글로벌 흐름에서 제공하는 필수 시스템 수준 기능을 유지하면서 챗봇의 기능을 확장할 수 있습니다.(While you cannot delete global flows, you can modify and customize them to suit your specific needs. You can add new actions, adjust the workflow logic, and incorporate additional functionality within the existing global flows. This allows you to extend the capabilities of the chatbot while maintaining the essential system-level functionality provided by the global flows.)
이는 챗봇이 주요 목적을 달성하기 위해 따르는 주요 대화 경로입니다.
예를 들어, 챗봇이 특정 제품에 대한 고객 서비스를 제공하도록 설계된 경우 기본 흐름에는 고객 문제에 대한 정보를 수집하고 잠재적인 솔루션을 제공하며 궁극적으로 문제를 해결하는 단계가 포함됩니다.
기본 흐름(Main Flow)은 가능한 광범위한 입력 및 시나리오를 고려해야 하기 때문에 일반적으로 챗봇 설계에서 가장 상세하고 복잡한 흐름입니다.
오류 흐름은 기본 흐름의 매개변수에 맞지 않는 예상치 못한 사용자 입력을 처리하도록 설계되었습니다.
여기에는 철자가 틀리거나 오해된 단어, 주제에서 벗어난 질문, 대화 맥락에서 이해되지 않는 입력이 포함될 수 있습니다.
오류 흐름은 사용자의 입력이 이해되지 않았다는 명확한 피드백을 사용자에게 제공하고 보다 구체적이거나 관련 있는 정보를 제공하라는 메시지를 표시해야 합니다.
챗봇의 설계에 따라 오류 흐름은 대체 입력에 대한 제안을 제공하거나 추가 지원을 위해 사용자를 특정 리소스나 담당자에게 안내할 수 있습니다.
💡
이 흐름(Error (Flow))은 봇에 복구할 수 없는 오류를 포함하여 기술적 문제가 있는 경우 트리거됩니다.
예를 들어, workflow. = 'some value'와 같은 잘못된 Javascript 코드가 포함된 실행 코드 카드(Execute Code card)가 있거나 캡처 또는 캐러셀에 대한 사용자 정의 선택이 잘못된 형식인 경우 오류 흐름이 트리거 됩니다.

사용자 경험을 향상시키기 위해 사용자에게 대화를 재개할지 묻는 확인 유형의 캡처 카드를 추가할 수 있습니다. 사용자가 ‘예’라고 대답하면 이를 Main 흐름으로 리디렉션할 수 있습니다(오류 루프에 진입하지 않도록 상태를 재설정하는 것을 기억하세요). 그렇지 않으면 대화를 종료하는 End 노드로 이동할 수 있습니다.(To improve the user experience, you can add a Capture card of type Confirmation that asks the user if they want to resume the conversation. If the user says yes, you can redirect them to the Main flow (remember to reset the state to avoid entering an error loop), otherwise you can flow to the End node which will end the conversation.)
나중에 문제를 해결할 수 있도록 이러한 상황을 어떻게든 저장하는 것이 좋습니다. 테이블을 사용하여 Summary Agent(요약 에이전트)가 제공하는 대화 기록 및 기타 관련 정보를 포함하는 데이터베이스를 만들 수 있습니다.
Timeout Flow는 챗봇이 일정 시간 동안 사용자로부터 응답을 받지 못할 때 발생합니다. 자세한 내용은 시간 초과 설정에 대한 이 문서를 확인하세요 .
이는 사용자가 다른 일로 주의가 산만해지거나 인터넷 연결이 지연되는 경우 발생할 수 있습니다.
시간 초과 흐름은 챗봇이 응답하지 않거나 연결이 끊긴 것처럼 나타나 사용자 좌절감과 이탈을 초래하는 것을 방지하는 데 도움이 되기 때문에 중요합니다.
사용자 경험을 개선하려면 대화가 끝났음을 사용자에게 알리는 텍스트 카드를 이 흐름에 추가하거나, 사용자가 대화를 계속할지 묻는 확인 카드를 추가할 수 있습니다. 그러면 시간 초과가 재설정되고 다시 카운트다운이 시작됩니다. 사용자가 ‘예’라고 대답하면 기본 흐름으로 리디렉션할 수 있습니다(이전 흐름을 알 수 있는 방법은 없습니다). 그렇지 않으면 대화를 종료하는 End node(종료 노드)로 이동할 수 있습니다.
The default timeout is 30 minutes. So if the user doesn’t respond for 30 minutes, this flow will be triggered.
기본 제한 시간은 30분입니다. 따라서 사용자가 30분 동안 응답하지 않으면 이 흐름이 트리거됩니다.
Conversation End Flow(대화 종료 흐름)은 사용자에게 자연스럽고 만족스러운 방식으로 대화를 마무리하도록 설계되었습니다.
챗봇의 상황과 목적에 따라 여기에는 사용자의 입력에 대해 감사를 표하고 피드백을 제공하거나 나중에 대화를 계속하도록 초대하는 것이 포함될 수도 있고 사용자가 수행할 구체적인 다음 단계를 제공하는 것이 포함될 수도 있습니다.
대화 종료 흐름은 긍정적인 사용자 경험을 만드는 데 도움이 되고 사용자가 나중에 다시 돌아올 수 있도록 유도하므로 챗봇 디자인의 중요한 부분입니다.💡
대화가 명시적으로 종료 노드로 전환되는 경우에만 봇은 종료 흐름에 들어갑니다. 노드에 유효한 전환이 없어 대화가 종료되면 종료 흐름이 트리거되지 않습니다.
특정 비즈니스 논리 및 사용자 지정 동작을 구현하기 위해 전반적인 흐름(global flows)과 함께 사용자 정의 워크플로(custom workflows)를 만들고 관리할 수 있다는 점에 유의하는 것이 중요합니다. 이렇게 하면 전반적인 흐름(global flows)의 무결성을 손상시키지 않으면서 챗봇의 기능을 향상시킬 수 있습니다.
Explorer Menu(탐색기 메뉴) 상단에 있는 “Add Workflow(워크플로우 추가)” 아이콘을 클릭하면 챗봇에 대한 사용자 정의 워크플로우를 생성할 수 있습니다. 워크플로는 봇과 사용자 간의 대화 논리와 흐름을 정의하므로 챗봇 개발의 중요한 측면입니다.
Custom Workflow(사용자 정의 워크플로)를 생성하면 특정 요구 사항 및 사용 사례에 따라 챗봇의 동작을 조정할 수 있습니다.
Custom Workflow(사용자 정의 워크플로)를 만들 때 얻을 수 있는 몇 가지 주요 이점과 가능성은 다음과 같습니다.
몇 가지 흐름을 구축한 후에는 반복적으로 구현하는 몇 가지 공통 패턴이 있다는 것을 금방 알 수 있습니다. 이는 여러 흐름 간에 재사용 가능한 구성 요소로 볼 수 있습니다. 따라서 폴더를 만들어 작업 흐름을 분류할 수 있습니다.
워크플로를 생성한 후 Flow Editor(흐름 편집기)에서 마우스 오른쪽 버튼을 클릭하고 Execute Workflow(워크플로 실행) 옵션 위에 마우스를 올려 놓고 워크플로를 선택합니다.(Once you have created your workflow, right-click in the Flow Editor, hover over the Execute Workflow option and select your workflow.)
workflow variables ( 워크플로 변수 ) 사용에 대해 자세히 알아보기
워크플로를 읽기 쉽게 유지하려면 흐름(flow)당 노드 수를 낮게 유지하는 것이 좋습니다. 워크플로에서 많은 양의 노드에 도달하면 경고가 표시됩니다.
Botpress는 변수를 사용하여 특정 위치의 정보를 저장하고 워크플로의 다른 부분에서 이것을 사용합니다. 변수는 대화를 보다 개인화하고 사용자에 대한 정보를 추적하는 데 도움이 됩니다. 또한 타사 API 및 데이터 소스와 연결하는 데 도움이 될 수 있습니다.
변수(variable)는 값을 저장하기 위해 사용되는 메모리 공간입니다. 변수의 이름은 사용자가 지정하며, 변수 이름은 변수를 식별하는 데 사용됩니다.(출처 : bard)
변수는 다음과 같은 특징을 가지고 있습니다.
변수는 프로그래밍에서 매우 중요한 개념입니다. 변수를 사용하면 프로그램의 로직을 간결하고 효율적으로 표현할 수 있습니다.
변수는 다음과 같은 용도로 사용할 수 있습니다.
변수는 프로그래밍에서 매우 중요한 개념이므로, 변수의 특징과 용도를 이해하는 것이 중요합니다.
Botpress에는 다양한 유형의 변수가 포함되어 있습니다. 이들 변수 유형은 서로 범위가 다르며 봇 흐름에서 액세스할 수 있는 위치가 다릅니다.(Botpress also includes different types of variables. These Variable types differ in scope or where they can be accessed in your bot’s flows.)
변수 범위(Scope)는 Workflow(워크플로) < User(사용자) < Bot(봇) 순으로 커집니다.

아래는 봇, 사용자, 워크플로 변수들의 예입니다.

변수가 설정되면 메시지 보내기 카드에서 그것을 제공하기 위해 {{workflow.variablename}}나 @workflow.variablename를 이용합니다.(Once the Variable is established, employ {{workflow.variablename}} or @workflow.variablename to render it in a send message card. )
user.currentCourse라는 변수가 있다면 user는 User Variables(사용자 변수)라는 의미이고 변수의 이름은 currentCourse가 됩니다. . 이 변수를 Excute Code 카드를 이용하여 자바스크립트 코딩에 이용하고자할 때는 @user.currentCourse 또는 {{user.currentCourse}}로 표기하여 변수를 가져와 이용할 수 있습니다. botpress에서 @user.currentCourse 와 {{user.currentCourse}}는 같은 의미입니다.

Botpress 변수는 유형이 지정됩니다. 즉, 보유할 수 있는 데이터가 제한되어 있습니다. 이러한 데이터 유형은 Botpress 이면의 코드가 원활하게 실행되도록 하는 데 중요할 뿐만 아니라 AI 작업이 더 나은 결과를 생성하는 데도 도움이 됩니다. Botpress 변수에 사용할 수 있는 다양한 데이터 유형은 다음과 같습니다.
| 유형 | 설명 |
|---|---|
| String(문자열) | 문자트로 처리되는 값입니다. 문자열에는 문자, 숫자, 특수 문자를 얼마든지 포함할 수 있습니다. 사용 예시: 사용자 이름 저장, AI 작업에서 생성된 메시지 저장. |
| Boolean(부울) | 변수는 소문자 ‘t’ 또는 ‘f’를 사용하며 true(참) 또는 false(거짓)이 됩니다. 사용 예시: 사용자가 재방문 고객인지 저장, 봇이 사용자에게 인사했는지 여부 저장 |
| Number(숫자) | 소수점 이하 자릿수가 있거나 없는 숫자형 변수입니다. 사용 예시: 사용자의 전화번호 저장, 주소의 지역번호 저장 |
| Date(날짜) | 단일 날짜 또는 날짜 및 시간인 변수입니다. 20220921T10:34:14Botpress는 for 21 September 2023 at 10:34 AM(14초) 와 같은 ISO 8601 날짜/시간 형식을 사용합니다.(Variables that are a single date or date and time. Botpress uses ISO 8601 date/time format, such as 20220921T10:34:14 for 21 September 2023 at 10:34 AM (with 14 seconds).)사용 예시: 사용자가 채팅을 시작할 때 저장, 사용자의 약속 날짜 저장 |
| Object(객체) | 키-값 쌍의 모음인 변수입니다. 코드를 다룰 때 유용하며 {key: value}와 같이 작성됩니다.사용 예시: 사용자 프로필 저장, API 호출 결과 저장 |
| Array(배열) | 다른 유사한 변수의 모음인 변수입니다. 배열에는 [“a”, “b”, “c”]와 같은 문자열 또는 [{key:value},{key:value}]과 같은 객체가 포함될 수 있습니다. 사용 예시: 사용자의 과거 메시지 저장, 사용자가 선택할 수 있는 옵션 저장 |
| Enum(열거형) | 설정된 선택 수 또는 선택지 중 하나가 될 수 있는 변수입니다. 사용 예시: 요일 저장, 음식 메뉴에서 사용 가능한 항목 저장 |
| Pattern(무늬) | Regular Expressions/Regex(정규식/정규식)을 사용하여 특수 패턴을 저장하는 변수입니다. 이 패턴은 특정 단어나 숫자와 일치할 수 있습니다. 사용 예시: 계좌번호 저장, 항공편 번호 저장 |
워크플로 변수는 단일 워크플로 내에서만 생성되고 사용됩니다. 이러한 변수는 다음과 같이 일회용 또는 독립형 워크플로(standalone flows)에 적합합니다.
Workflow Variables(워크플로 변수)
워크플로 변수는 다른 워크플로에서 액세스할 수 없습니다. 예를 들어 별도의 워크플로에서 생성된 워크플로 변수는 Main에서 액세스할 수 없습니다.(Workflow variables are not accessible in any workflow other than the one they were created in. For example, a workflow Variable created in a separate workflow will not be accessible in Main.)
(봇의) 워크플로에서 변수를 만들려면 다음 단계를 따르세요.
{{workflow.variablename}} 또는 @workflow.variablename 를 사용하여 표시할 수 있습니다.워크플로에는 봇 전체에 정보를 전달하는 데 도움이 되는 입력과 출력이 있을 수 있습니다. 이는 워크플로에서 확인된 전화번호와 같은 정보를 반환하거나 사용자 ID와 같은 정보가 필요한 경우 유용할 수 있습니다.

<workflow-cardName>과 <variablename>를 바꿔 액세스할 수 있습니다.((When you call this workflow from another flow, the output Variable will be accessible by typing {{workflow.<workflow-cardName>.<variablename>}}, replacing <workflow-cardName> and <variablename> with the name of the card that represents your workflow and Variable respectively.)사용자 변수는 대화 사이에 사용자를 따라다니 변수입니다. 예를 들어 사용자가 월요일과 수요일에 봇과 대화하는 경우 월요일에 설정된 모든 사용자 변수는 수요일에도 계속 액세스할 수 있습니다. 사용자 변수는 다음과 같이 자주 변경되지 않는 데이터를 저장하는 데 적합합니다. 사용자의 개인 정보 또는 ID 번호 저장
사용자 변수가 설정되면 메시지 보내기 카드에 {{user.variablename}}나 .@user.variablename으로 표기하여 변수를 사용합니다.(Once the User Variable is established, employ {{user.variablename}} or @user.variablename to render it in a send message card. memo : 이 부분은 정확한 의미를 모르겠습니다.)
봇 변수는 봇 내에 모든 대화에서 챗봇의 모든 사용자가 액세스할 수 있습니다. 일반적으로 다음과 같은 구성 및 개발자 정보에 사용됩니다.
봇 변수는 암호화되지 않거나 안전하게 저장되지 않습니다. API 키나 비밀번호와 같은 비밀을 봇 변수에 저장하지 마세요. 대신 configuration variable(구성 변수)를 사용하세요!
Bot variables(봇 변수)는 user variables(사용자 변수)와 마찬가지로 텍스트 및 기타 카드에서 @bot.variablename 또는 {{bot.variablename}}와 함께 사용할 수 있습니다 .
세션 변수(Session variables)는 모든 흐름에서 사용할 수 있지만 하나의 대화(one conversation)에만 사용할 수 있습니다. 이러한 변수는 다음과 같이 대화 전반에 걸쳐 사용되는 데이터에 적합합니다.
Session Variables(세션 변수)는 PG결제에 사용할 수 있을 것으로 판단됩니다.
세션 변수는 Execute Code card(코드 실행 카드) 내부에서만 생성할 수 있습니다 .
하나를 만들려면 간단히 다음과 같이 작성하십시오. event.state.session.variablename = "Hello World" 또는 줄여서 session.variablename = "Hello World" 로 작성하세요.
텍스트나 다른 카드에서 세션 변수를 사용하려면 {{event.state.session.variablename}} 또는 짧게 {{session.variablename}}처럼 이중 중괄호로 묶어줍니다.
구성 변수(Configuration variables) API 키, 데이터베이스 자격 증명과 같은 필수 정보를 저장하고 챗봇 개발자가 필요에 따라 쉽게 액세스하고 수정할 수 있도록 하는 컨테이너입니다. 구성 변수(Configuration variables)는 특별한 종류의 보안 봇 변수입니다. 구성변수는 User Variables(사용자 변수), Bot Variables(봇 변수)와 달리 봇에서 관리하지 않고도 클라우드 대시보드(https://app.botpress.cloud/)에서 관리할 수도 있습니다. 구성 변수는 다음과 같은 비밀을 저장할 수 있습니다.
아래의 1과 2에서 설명하는 생성 방법을 찾을 수가 없습니다.(23.10.28 memo)
코드에서 env.key를 사용하여 Configuration Variable(구성 변수)의 값을 가져올 수 있습니다. Execute Code Card(코드 실행 카드)에서 이를 사용하려면 해당 값에 액세스할 수 있도록 env.key를 작성할 수 있습니다. 구성 변수가 생성되면 클라우드 관리 대시보드(https://app.botpress.cloud/)에서 해당 변수에 액세스하고 관리할 수 있습니다. 봇을 선택한 다음 Configuration Variables(구성 변수) 탭을 클릭하면 됩니다.(You can use env.key in your code to get the value of the Configuration Variable. To use it in an Execute Code Card, you can write env.key to access its value. Once a configuration Variable is created, you can access and manage it from the cloud admin dashboard. Just select your bot and then click on the tab for Configuration Variables.)

이 부분(Passing Variables between Flows(워크플로우 간 변수 전달))은 이해가 안됩니다. pass합니다.
ON on the Entry node of the target workflow.)exit node of the parent workflow, the one that brings the user to the target workflow, match the parent workflow Variable with the target workflow input Variable.)코드의 변수는 variabletype.variablename패턴을 따릅니다. (예를들어 user.currentCourse라는 변수를 만들었다면 이 변수의 종류는 user변수(user용 변수)이고 변수의 이름은 currentCourse입니다.) 다음은 이를 사용하는 방법에 대한 분석 및 예입니다.
[ksh memo]여기서 카드는 Excute Card를 의미하고 변수 사용법이란 JavaScript에서 변수를 어떻게 사용할 수 있는지 설명하는 것입니다.
이는 일반적으로 변수를 초기화하거나 해당 값을 변경하는 방법입니다.
workflow.orderNumber = 12345
session.cartTotal = 59.99
user.lastName = ‘Smith’
bot.version = ‘1.2.3’
env.databaseURL = ‘https://example.com/db’
[ksh memo]변수의 초기값 할당은 변수의 편집창의 Additional Settings에서도 가능합니다. 그러나 다수의 변수의 초기값을 할당할때는 Excute Code에서 javascript code로 위에서 언급된 ‘workflow.orderNumber = 12345;session.cartTotal = 59.99;user.lastName = “Smith”;bot.version = “1.2.3”;env.databaseURL = “https://example.com/db”;’를 입력하여 다수의 변수의 초기값을 할당할 수 있음을 설명한 것으로 보입니다.

변수의 값을 확인하고 그에 따라 코드를 실행합니다.
if (user.firstName === ‘John’) {
console.log(‘Hello John!’)
} else {
console.log(‘Welcome, user!’)
}
여기서는 변수를 function argument(함수 인수, arguments 객체는 함수에 전달된 인수에 해당하는 Array 형태의 객체)로 전달하거나 함수 내에서 사용할 수 있습니다.
참고로, 아래 코드에서 firstName은 greetUser() 함수의 매개변수입니다. greetUser() 함수는 firstName 매개변수에 전달된 값을 사용하여 “Hello, ‘ + firstName + ‘!” 메시지를 출력합니다.
function greetUser(firstName) {
console.log(‘Hello, ‘ + firstName + ‘!’)
}
greetUser(user.firstName)
변수를 결합하거나 연결할 수도 있습니다.
// 아래의 코드는 user 객체의 firstName 속성과 lastName 속성의 값을 결합하여 fullName 변수에 할당합니다.
var fullName = user.firstName + ‘ ‘ + user.lastName
//or
//아래의 코드는 user 객체의 firstName 속성과 lastName 속성의 값을 결합하여 “Hello, [이름]!” 메시지를 생성합니다. 그런 다음 이 메시지를 welcomeMessage 변수에 할당합니다.
var welcomeMessage = ‘Hello, ‘ + user.firstName + ‘ ‘ + user.lastName + ‘!’
유형이 일치하지 않으면 Botpress에서 오류가 발생할 수 있습니다. 값을 할당하기 전에 type(유형) 확인을 사용할 수 있습니다.
if (typeof workflow.userAcctId === ‘number’) {
workflow.userAcctId = 67890 // This is okay.
} else {
console.error(‘Invalid type for userAcctId!’)
}
봇이 외부 서비스와 상호 작용하는 경우 env.apiKey와 같은 environment variable(환경 변수)를 사용할 수 있습니다.
const apiKey = env.API_KEY
const apiUrl = env.API_URL
const config = {
headers: {
Authorization: Bearer ${apiKey},
},
}
const response = await axios.get(apiUrl, config)
const data = response.data
// Process the data as needed
// …
// Example: Log the response data
console.log(data)
Axios는 node.js와 브라우저를 위한 Promise 기반 HTTP 클라이언트 입니다. (브라우저와 node.js에서 사용할 수 있는 Promise 기반 HTTP 클라이언트 라이브러리). 그것은 동일한 코드베이스로 브라우저와 node.js에서 실행할 수 있습니다.(출처 : https://axios-http.com/kr/docs/intro ). Botpress는 Axios를 이용해 외부 API를 호출하고 data를 가져온다는 것을 알 수 있습니다. 이것은 botpress에서 구글의 bard를 호출할때 유용하므로 꼭 기억해두세요.
이하 작은 글자(위첨자)로 표기된 부분은 위에 코드를 상세 설명한 것입니다. 전문적이어서 필요없다고 생각하시면 Special Variables(특수 변수) 로 이동해주세요.
위 코드는 JavaScript로 작성되었으며 axios 라이브러리를 사용하여 API 엔드포인트에 HTTP GET 요청을 보내는 방법을 보여줍니다.
코드를 단계별로 살펴보겠습니다.
1. 환경 변수에서 API 키와 URL 가져오기:
JavaScript
const apiKey = env.API_KEY;
const apiUrl = env.API_URL;
이 줄은 각각 API_KEY 및 API_URL이라는 이름의 환경 변수에서 API 키와 API URL 값을 가져옵니다. 환경 변수는 종종 API 자격 증명과 같은 민감한 정보를 저장하는 데 사용됩니다.
2. HTTP 요청 헤더 구성:
JavaScript
const config = {
headers: {
Authorization: Bearer ${apiKey},
},
};
이 코드는 config라는 구성 개체를 정의하여 HTTP 요청의 Authorization 헤더를 설정합니다. Bearer 인증 체계는 API 인증에 일반적으로 사용되며 이전에 얻은 apiKey 변수가 액세스 토큰으로 사용됩니다.
3. HTTP GET 요청 보내기:
JavaScript
const response = await axios.get(apiUrl, config);
이 줄은 axios 라이브러리를 사용하여 apiUrl에 HTTP GET 요청을 보냅니다. config 개체는 요청 헤더를 지정하기 위해 인수로 전달됩니다. await 키워드는 비동기 응답을 기다린 다음 다음 단계로 진행하는 데 사용됩니다.
4. API 응답 데이터 추출 및 처리:
JavaScript
const data = response.data;
// 필요한 대로 데이터 처리
// …
// 예: 응답 데이터 로깅
console.log(data);
이 코드는 response 개체에서 응답 데이터를 추출하여 data 변수에 저장합니다. data의 구체적인 처리는 API 응답 구조와 애플리케이션의 요구 사항에 따라 다릅니다. 이 예에서는 응답 데이터가 단순히 콘솔에 로깅됩니다.
요약하자면, 제공된 코드 조각은 환경 변수에서 API 자격 증명을 가져오는 방법, HTTP 요청 헤더를 구성하는 방법, axios를 사용하여 HTTP GET 요청을 보내는 방법, API 응답 데이터를 처리하는 방법을 보여줍니다.
위 코드는 다음과 같은 작업을 수행합니다.
API_KEY 및 API_URL 환경 변수에서 API 키와 URL 값을 가져옵니다.Authorization 헤더에 Bearer 인증 체계를 사용하여 apiKey를 설정합니다.axios 라이브러리를 사용하여 apiUrl에 HTTP GET 요청을 보냅니다.data 변수에 저장합니다.한편, const 키워드는 변수의 값을 변경할 수 없도록 선언하는 데 사용됩니다. const 키워드를 사용하여 선언된 변수는 상수라고 합니다.
위 코드에서 const apiKey = env.API_KEY;는 apiKey 변수를 상수로 선언하고 env.API_KEY 환경 변수의 값을 apiKey 변수에 할당합니다. 따라서 apiKey 변수의 값은 나중에 변경할 수 없습니다.
const 키워드를 사용하면 코드의 가독성과 유지 보수성을 향상시킬 수 있습니다. const 키워드를 사용하여 선언된 상수는 변수의 값이 변경되지 않음을 명확하게 나타냅니다. 이는 코드의 오류 가능성을 줄이는 데 도움이 됩니다.
const 키워드의 다른 용도로는 함수의 매개변수의 값을 변경할 수 없도록 선언하는 것이 있습니다.
Botpress는 봇 코드(Javascript Code)에서 사용할 수 있는 다양한 변수를 제공합니다. 이러한 변수는 사용자 및 대화에 대한 정보에 액세스하고 디버깅하는 데 유용합니다.
아래의 특수 변수들은 bot을 개발하다보면 많이 접하게 되는데, 요약 에이전트 가 작성한 대화 요약을 담고 있는 Special Variables(특수 변수)인, conversation.SummaryAgent.summary 특수 변수를 Excute Code 카드를 이용하여 자바스크립트 코딩에 이용하고자할 때는 @conversation.SummaryAgent.summary 또는 {{conversation.SummaryAgent.summary}}로 표현하여 사용할 수 있습니다. botpress에서 @conversation.SummaryAgent.summary 와 {{conversation.SummaryAgent.summary}}는 같은 의미입니다.
| Special Variables(특수 변수) | Type | Description |
|---|---|---|
| event.preview | Event | 사용자가 보낸 마지막 메시지입니다. 새로운 메시지가 올 때마다 교체됩니다.(The last message sent by the user. It will be replaced every time there is a new message.) |
| conversation.SummaryAgent.summary | Agent | 요약 에이전트 가 작성한 대화 요약입니다 . 일어난 일에 대한 설명입니다.(Summary of the conversation created by the Summary Agent. It’s an explanation of what happened.) |
| conversation.SummaryAgent.transcript | Agent | 일정 횟수만큼 거슬러 올라가는 대화 내역이 포함되어 있는 대화 기록입니다.(Transcript of the conversation going back a certain amount of turns.) |
| turn.KnowledgeAgent.answer | Agent | Knowledge Agent 가 제공하는 답변(The answer provided by the Knowledge Agent) |
| turn.KnowledgeAgent.responded | Agent | Knowledge Agent가 사용자 질문에 자동으로 응답했는지 여부. 그 값은 true또는false(Wether the Knowledge Agent has responded automatically to a user question. Its value will be true or false) |
| turn.KnowledgeAgent?.answer?.length | Agent | 지식 답변의 문자 수입니다. 표현식 에서 이를 사용하여 KB에 답변이 있는지 확인하세요. !답변이 없는지 확인하려면 선택적으로 코드 시작 부분에 추가하세요 .(The amount of characters in the Knowledge answer. Use this in an Expression to check if there is an answer in the KB. Optionally add ! to start of the code in order to check if there was NOT an answer.) |
| turn.KnowledgeAgent.citations | Agent | Knowledge 답변에 대한 인용 목록입니다.(A list of citations for the Knowledge answer.) |
| user.TranslatorAgent.language | Agent | ISO 639-1 형식의 현재 사용자 언어 코드입니다. 번역 에이전트에 대한 추가 정보(The current user language code in ISO 639-1 format. More about the Translator Agent) |
| user.TranslatorAgent.language = ‘en’ | Agent | 이 코드 조각은 사용자 언어를 영어로 설정합니다. ISO 639-1 형식의 언어 코드로 대체(This code snippet set’s the user language to English. Replace with any language code in the ISO 639-1 format) |
| event.kb.results.map((a) => a.dsFriendlyName + ‘\n’ + a.content).join(‘\n\n’) | Event | 이 코드 조각은 최종 Knowledge 답변을 생성한 원시 콘텐츠를 반환합니다.(This code snippet returns the raw content that generated the final Knowledge answer.) |