웹훅¶
경고
개발자, 솔루션 설계자 또는 기타 기술 담당자와 웹훅 사용 시기 및 구현 프로세스 전반에 대한 내용을 상의하는 것을 강력히 권장합니다. 웹훅이 제대로 구성되지 않으면 Odoo 데이터베이스가 중단될 수 있으며 복구까지 장시간이 소요될 수 있습니다.
**Odoo 스튜디오**에서 생성할 수 있는 웹훅을 사용하면 다른 외부 시스템에서 특정 이벤트가 발생할 때 Odoo 데이터베이스의 작업을 자동화할 수 있습니다.
실제로 진행되는 방식은 다음과 같습니다: 외부 시스템에서 이벤트 발생 시 데이터 파일(“페이로드”)이 POST API 요청을 통해 Odoo 웹훅 URL로 전송되며 Odoo 데이터베이스에서 사전에 지정되어 있는 작업이 수행됩니다.
사전에 지정된 간격으로 실행되는 예약 작업 혹은 명시적으로 호출되는 수동 API 요청과는 달리, 웹훅은 실시간의 이벤트 기반 통신 및 자동화를 지원합니다. 예를 들어, 웹훅 설정을 통해 외부 POS 시스템에서 판매 주문이 확인될 경우 Odoo 재고 데이터가 자동으로 업데이트되게 하는 것도 가능합니다.
Odoo에서 웹훅을 설정하는 것은 두 개의 Odoo 데이터베이스를 연결할 때 코딩이 필요하지 않지만 :ref:`웹훅 테스트 <studio/webhooks/test-webhook>`에는 외부 도구가 필요합니다. :ref:`사용자 정의 대상 레코드 또는 작업 <studio/webhooks/webhook-example>`에는 프로그래밍 기술이 필요할 수 있습니다.
Odoo에서 웹훅 생성하기¶
중요
실제 데이터베이스에 웹훅을 구현하기 전에 :ref:`복제 데이터베이스 <odoo-online/duplicate>`를 사용하여 구성하고 테스트하여 웹훅이 의도한 대로 작동하는지 확인하세요.
팁
웹훅을 생성하기 전에 개발자 모드 을 더욱 다양하게 선택할 수 있습니다. 또한 페이로드 구성을 위해 필요할 수 있는 모델 및 필드의 기술적인 이름을 확인할 수 있습니다.
개발자 모드가 활성화된 상태에서 모델의 기술명을 확인하려면 모델 이름 위에 마우스를 가져간 다음 (내부 링크) 를 클릭하세요. 기술명은 모델 필드에서 확인할 수 있습니다. 예를 들어, 판매주문서 웹훅은 판매주문서 모델을 사용하지만, 페이로드에는 기술명으로 sale.order 가 사용됩니다.
스튜디오 에서 웹훅을 생성하려면 다음과 같이 진행합니다:
스튜디오 앱을 실행한 후 웹훅 을 클릭하고 신규 를 클릭하세요.
웹훅의 목적을 나타낼 수 있도록 의미 있는 명확한 이름을 지정합니다.
필요한 경우, 그리고 개발자 모드가 활성화되어 있는 경우 드롭다운에서 적절한 :guilabel:`모델`을 선택하세요. 개발자 모드가 활성화되지 않은 경우 자동화 규칙은 기본적으로 현재 모델을 대상으로 합니다.
웹훅의 URL은 자동으로 생성되지만 필요한 경우 :guilabel:`시크릿 회전`을 클릭하여 변경할 수 있습니다. 이것은 데이터베이스에 업데이트를 보낼 외부 시스템에서 웹훅을 구현할 때 사용해야 하는 URL입니다.
경고
URL은 기밀 이므로 주의하여 취급해야 합니다. 온라인에서 공유하거나 부주의하게 공개가 된 경우 Odoo 데이터베이스에 허가받지 않고도 액세스할 수 있게 될 가능성이 있습니다. 최초 구현 후 URL이 변경된 경우에는 외부 시스템에서도 반드시 이 내용을 업데이트해야 합니다.
원하는 경우 :guilabel:`호출 기록`을 활성화하여 문제 해결 등의 목적으로 웹훅 URL에 대한 API 요청 기록을 추적하세요.
웹훅을 전송하는 시스템이 Odoo가 아닌 경우, 대상 레코드 코드를 조정하여 웹훅 URL로 API 호출 시 페이로드에 포함된 JSON 레코드를 검색하도록 해야 합니다. 웹훅을 전송하는 시스템이 Odoo 데이터베이스인 경우, 페이로드에 `id`와 `model`이 나타나는지 확인하세요.
웹훅을 사용하여 Odoo 데이터베이스에 레코드를 생성하는 경우, 기본 대상 레코드 형식 대신
model.browse(i)또는 `model.search(i)`를 사용하세요.수행할 작업 탭에서 :guilabel:`작업 추가`를 클릭하여 실행할 :ref:`작업 <studio/automated-actions/action>`을 정의하세요.
외부 시스템에서 웹훅을 구현하기 전에 의도대로 작동하는지 확인하기 위해 :ref:`테스트 <studio/webhooks/test-webhook>`하세요.
팁
웹훅은 **스튜디오**의 자동화 메뉴에서 웹훅 시 트리거를 선택하여 생성할 수도 있습니다.
호출 기록`이 활성화된 경우 API 요청 기록에 액세스하려면 :guilabel:`자동화 규칙 양식 상단의 로그 스마트 버튼을 클릭하세요.
웹훅의 목적이 기존 레코드를 업데이트하는 것이 아닌 경우(예: 새 레코드 생성), 코드 실행 작업을 선택해야 합니다.
웹훅 테스트¶
웹훅을 테스트하려면 테스트 페이로드와 POST API 요청을 통해 페이로드를 전송할 수 있는 `Postman <https://www.postman.com/>`_과 같은 외부 도구 또는 시스템이 필요합니다. 이 섹션에서는 Postman에서 웹훅을 테스트하는 단계를 설명합니다.
팁
테스트 페이로드를 사용하여 웹훅을 테스트하는 방법에 대한 단계별 설명은 :ref:`웹훅 사용 사례 섹션 <studio/webhooks/webhook-examples>`을 참조하세요.
Postman을 사용한 웹훅 테스트에 대한 구체적인 도움이 필요하면 해당 지원팀에 문의하세요.
Postman에서 새 HTTP 요청을 생성하고 메서드를 :guilabel:`POST`로 설정하세요.
(링크) 아이콘을 사용하여 Odoo 데이터베이스에서 웹훅의 URL을 복사한 다음 Postman의 URL 필드에 붙여넣으세요.
본문 탭을 클릭하고 로 데이터 를 선택합니다.
파일 유형을 :guilabel:`JSON`으로 설정한 다음 테스트 페이로드에서 코드를 복사하여 코드 편집기에 붙여넣으세요.
전송 합니다.
Postman 화면 하단의 응답 뷰어에서 HTTP 응답 코드를 포함한 세부 정보를 통해 웹훅이 올바르게 작동하는지 여부를 확인할 수 있습니다.
200 OK또는status: ok메시지가 나타날 경우 Odoo 측에서 웹훅이 제대로 작동하고 있는 것입니다. 이제 다른 시스템에서 Odoo 웹훅 URL을 통해 API 요청을 자동 전송하도록 구현할 수 있게 됩니다.다른 응답이 반환되는 경우에는, 해당 응답 번호를 통해 문제를 파악해 낼 수 있습니다. 예를 들어,
500 내부 서버 오류메시지가 나타난다면 Odoo에서 호출이 제대로 해석되지 못했다는 것을 의미합니다. 이러한 경우 JSON 파일의 필드가 웹훅의 환경설정 메뉴 및 테스트 호출을 전송하는 시스템에 올바르게 매핑되었는지 확인하세요.
팁
Odoo의 웹훅 구성에서 호출 로깅을 활성화하면 웹훅이 의도한 대로 작동하지 않을 경우 오류 로그를 제공합니다.
외부 시스템에 웹훅 구현하기¶
Odoo에서 웹훅이 성공적으로 생성되고 테스트되면 Odoo 데이터베이스로 데이터를 전송하는 시스템에서 이를 구현하고 POST API 요청이 웹훅의 URL로 전송되도록 하세요.
웹훅 사용 사례¶
다음은 Odoo에서 웹훅을 사용하는 방법에 대한 두 가지 예시입니다. 각 예시에 대한 테스트 페이로드가 제공되며 웹훅 테스트 섹션에서 확인할 수 있습니다. 테스트 페이로드를 전송하는 데 `Postman <https://www.postman.com/>`_이 사용됩니다.
판매주문서 통화 업데이트하기¶
이 웹훅은 외부 시스템이 해당 판매 주문 번호(페이로드의 id 레코드로 식별됨)를 포함하는 POST API 요청을 웹훅의 URL로 전송할 때 판매 앱의 판매 주문을 `USD`로 업데이트합니다.
이는 미국 내에 위치한 모회사를 둔 미국 외 자회사나 합병 시 하나의 Odoo 데이터베이스로 데이터를 통합할 때 유용할 수 있습니다.
웹훅 생성하기¶
이 웹훅을 생성하려면 다음 단계에 따라 진행합니다:
판매 앱을 연 다음 스튜디오를 열고 :guilabel:`웹훅`을 클릭하세요. 판매 주문 모델이 기본적으로 선택됩니다.
새로 만들기 를 클릭합니다. 기본적으로 트리거 기능은 :guilabel:`웹훅 동작 시`로 설정됩니다.
대상 레코드 를 `model.env[payload.get(‘model’)].browse(int(payload.get(‘id’)))`로 설정한 후:
payload.get('model')retrieves the value associated with themodelkey in the payload, i.e.,sale.order, which is the technical name of the Sales Order model.payload.get('id')retrieves the value associated with theidkey in the payload, i.e., the number of the target sales order in your Odoo database with theSand leading zeros removed.int는 검색된 id를 정수(즉, 정수)로 변환합니다.browse()메서드는 정수로만 사용할 수 있기 때문입니다.
활동 추가 를 클릭합니다.
유형 섹션에서 레코드 업데이트 를 클릭합니다.
작업 세부정보섹션에서업데이트를 선택하고통화필드를 선택한 다음USD를 선택합니다.
저장 후 닫기 를 클릭합니다.
웹훅 테스트¶
이 웹훅을 테스트하려면 다음과 같이 진행합니다:
Postman을 연 상태에서 새 HTTP 요청을 생성하고 메서드를POST로 설정합니다.
(링크)아이콘을 사용하여 Odoo 웹훅의 URL을 복사하고 Postman의 URL 필드에 붙여넣습니다.
본문 탭을 클릭하고 로 데이터 를 선택합니다.
파일 유형을JSON으로 설정한 다음 이 코드(즉, 페이로드)를 복사하여 코드 편집기에 붙여넣습니다:
{ "model": "sale.order", "id": "SALES ORDER NUMBER" }
Odoo 데이터베이스에서 웹훅을 테스트할 판매주문서를 선택합니다. 붙여넣은 코드를
판매주문서 번호를 해당 판매주문서 번호로 바꾸되, 숫자 앞에 있는S나 0은 삭제합니다. 예를 들어, 판매주문서 번호가S00007`인 경우 Postman에는 `7로 입력해야 합니다.전송 합니다.
Postman의응답 뷰어를 참조하여 웹훅이 제대로 작동하는지 확인합니다.
200 OK또는status: ok이외의 메시지가 반환되면 메시지와 연결된 번호가 문제를 식별하는 데 도움이 됩니다.
새 계약서 만들기¶
이 웹훅으로 Odoo 데이터베이스에 새 연락처를 생성하는 사용자 지정 코드를 활용할 수 있으며, 외부 시스템에서 연락처 정보가 포함된 웹훅의 URL로 POST API 요청을 전송할 때 진행됩니다. 이는 새로운 공급업체 또는 고객을 자동으로 생성하는 데 유용한 기능입니다.
웹훅 생성하기¶
이 웹훅을 생성하려면 다음 단계에 따라 진행합니다:
연락처앱을 열고스튜디오를 엽니다. 그런 다음웹훅을 클릭합니다. 연락처모델이 기본으로 선택됩니다.
새로 만들기 를 클릭합니다. 기본적으로 트리거 기능은 :guilabel:`웹훅 동작 시`로 설정됩니다.
대상 레코드를
model.browse([2])로 설정합니다. 이것은 기본적으로 자리 표시자이며, 자동화 작업의 코드가 페이로드에서 검색해야 할 내용과 레코드를 생성해야 하는 모델을 웹훅에 알려줍니다.활동 추가 를 클릭합니다.
유형 섹션에서 코드 실행 을 클릭합니다.
이 코드를 복사하여작업 세부정보섹션의코드탭에 있는 코드 편집기에 붙여넣습니다:
# variables to retrieve and hold data from the payload contact_name = payload.get('name') contact_email = payload.get('email') contact_phone = payload.get('phone') # a Python function to turn the variables into a contact in Odoo if contact_name and contact_email: new_partner = env['res.partner'].create({ 'name': contact_name, 'email': contact_email, 'phone': contact_phone, 'company_type':'person', 'customer_rank': 1, }) # an error message for missing required data in the payload else: raise ValueError("Missing required fields: 'name' and 'email'")
저장 후 닫기 를 클릭합니다.
웹훅 테스트¶
이 웹훅을 테스트하려면 다음과 같이 진행합니다:
Postman에서 새 HTTP 요청을 생성하고 메서드를POST로 설정합니다.
(링크)아이콘을 사용하여 Odoo 웹훅의 URL을 복사하고 Postman의 URL 필드에 붙여넣습니다.
본문 탭을 클릭하고 로 데이터 를 선택합니다.
파일 유형을JSON으로 설정한 다음 이 코드(즉, 페이로드)를 복사하여 코드 편집기에 붙여넣습니다:
{ "name": "CONTACT NAME", "email": "CONTACTEMAIL@EMAIL.COM", "phone": "CONTACT PHONE NUMBER" }
붙여넣은 코드에서
CONTACT NAME,CONTACTEMAIL@EMAIL.COM,CONTACT PHONE NUMBER를 새 연락처의 정보로 바꿉니다.전송 합니다.
Postman의응답 뷰어를 참조하여 웹훅이 제대로 작동하는지 확인합니다.
200 OK또는status: ok이외의 메시지가 반환되면 메시지와 연결된 번호가 문제를 식별하는 데 도움이 됩니다.