메인 콘텐츠로 건너뛰기

개요

Note 리소스에 대한 webhook 이벤트예요. 모든 note 이벤트는 resourceType: "Note"를 사용해요.

이벤트 상세

note.created

  • 실시간 음성 노트 녹음을 시작할 때
  • 녹음 파일로부터 노트를 생성할 때

note.deleted

  • 사용자가 노트를 영구적으로 삭제할 때

note.recording.completed

  • 모든 오디오 데이터 처리가 끝나고 텍스트 변환과 문단 생성이 완료될 때
  • 중요: 단일 회의 세션 동안 녹음/중지가 여러 번 일어날 수 있기 때문에, 실시간 회의 노트에서는 이 이벤트가 여러 번 발생할 수 있어요
  • 이 이벤트를 받으면 그 시점의 완전한 노트 정보를 가져올 수 있어요

note.user_content.updated

  • 사용자가 노트 내용을 직접 편집할 때

note.ended

  • 노트가 완전히 끝났을 때 (모든 처리가 완료된 후) 발생해요
  • 여러 번 발생할 수 있는 note.recording.completed와 달리, 노트 수명 주기당 한 번만 발생해요
  • 노트 완료를 확정하는 이벤트예요
  • 노트가 최종 상태에 도달했다는 것을 알아야 할 때 이 이벤트를 사용하세요

note.participants.updated

  • 노트에서 회의 참가자가 추가되거나 제거될 때 발생해요
  • 기존 참가자의 이름이나 이메일이 변경될 때는 발생하지 않아요
  • resource 필드에는 업데이트된 participants 배열을 포함한 전체 Note 오브젝트가 담겨요

Payload 예시

리소스 데이터

Note 이벤트에는 완전한 Note 리소스 데이터가 포함돼요. 필드 설명은 Note API를 참고하세요. 중요: Note 리소스에는 메타데이터만 담겨 있어요. transcript 내용은 List Note Paragraphs API를 사용해 실제 텍스트 데이터를 가져오세요.

가이드

실시간 회의 노트

  • 실시간 회의에서는 같은 노트에 대해 recording.completed가 여러 번 발생할 수 있어요
  • 이 이벤트를 받을 때마다 항상 최신 노트 데이터를 가져오세요
note.ended 이벤트 사용하기:
  • note.ended는 노트가 완전히 끝났을 때 한 번만 발생하므로 더 명확한 수명 주기 관리가 가능해요
  • 회의 중 여러 번 발생할 수 있는 recording.completed와 달리, note.ended는 확정적인 종료를 알려요
  • recording.completednote.ended 이벤트 모두 지원되며, 필요에 따라 함께 사용할 수 있어요
예시 시나리오:
  1. 회의 시작 → 녹음 시작
  2. 녹음 일시정지 → transcript & 요약 처리 → note.recording.completed 발생 (Event #1)
  3. 녹음 재개 → 처리 계속
  4. 녹음 중지 → transcript & 요약 처리 → note.recording.completed 발생 (Event #2)
예시 처리:
async function handleNoteRecordingCompleted(event) {
  const noteId = event.data.resourceId;
  
  // Use note metadata from event data
  const note = event.data.resource;
  
  // Fetch paragraph content
  const paragraphs = await fetchNoteParagraphs(noteId);
  
  // Process the complete note data
  processNoteUpdate(note, paragraphs);
}