feat: init
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
# Knowledge-graph
|
||||
|
||||
## Twake to Knowledge-graph events
|
||||
|
||||
Twake can send events to the knowledge graph following this documentation:
|
||||
|
||||
[Events from Twake](./pushed-from-twake.md)
|
||||
|
||||
## Knowledge-graph to Twake REST
|
||||
|
||||
The knowledge graph can send us event at the following endpoint:
|
||||
`POST https://api.twake.app/internal/services/knowledge-graph/v1/push`
|
||||
|
||||
Authorized by a Token authorization header:
|
||||
`Authorization: Token {some token defined together}`
|
||||
|
||||
And with the following data in JSON:
|
||||
|
||||
```
|
||||
{
|
||||
events: [KnowledgeGraphCallbackEvent, KnowledgeGraphCallbackEvent, KnowledgeGraphCallbackEvent, ...]
|
||||
}
|
||||
|
||||
type KnowledgeGraphCallbackEvent = {
|
||||
recipients: {
|
||||
type: "user";
|
||||
id: string; // KG user id which is a md5 of the email
|
||||
}[];
|
||||
event: {
|
||||
type: "user_tags"; //More events will be added later
|
||||
data: {
|
||||
//For user_tags event only
|
||||
tags?: {
|
||||
value: string;
|
||||
weight: number;
|
||||
}[];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
```
|
||||
|
||||
The reply will be if everything was alright:
|
||||
|
||||
```
|
||||
{
|
||||
"status": "success"
|
||||
}
|
||||
```
|
||||
+172
@@ -0,0 +1,172 @@
|
||||
# Knowledge-graph
|
||||
|
||||
## Knowledge-graph to Twake events
|
||||
|
||||
[Send events to Twake](./README.md)
|
||||
|
||||
## Events sent by twake to the knowledge graph
|
||||
|
||||
### User created / updated
|
||||
|
||||
```typescript
|
||||
{
|
||||
records: [
|
||||
{
|
||||
key: "null",
|
||||
value: {
|
||||
id: "User",
|
||||
properties: {
|
||||
_kg_user_id: string; //Console wide user id (based on the console id), prefer to use this one
|
||||
_kg_email_id: string; //Console wide user id (based on the email md5)
|
||||
_kg_company_all_id: string[]; //All console wide companies_ids for this user
|
||||
|
||||
user_id: string; //Twake internal user id
|
||||
company_id: string; //Company internal id
|
||||
user_created_at: number;
|
||||
user_last_activity: string;
|
||||
email: string;
|
||||
first_name: string;
|
||||
last_name: string;
|
||||
},
|
||||
},
|
||||
},
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### Channel created / updated
|
||||
|
||||
```typescript
|
||||
{
|
||||
records: [
|
||||
{
|
||||
key: "null",
|
||||
value: {
|
||||
id: "Channel",
|
||||
properties: {
|
||||
_kg_user_id: string; //Console wide user id (based on the console id), prefer to use this one
|
||||
_kg_email_id: string; //Console wide user id (based on the email md5)
|
||||
_kg_company_id: string; //Console wide company id
|
||||
channel_id: string;
|
||||
channel_name: string;
|
||||
channel_owner: string;
|
||||
workspace_id: string;
|
||||
company_id: string;
|
||||
},
|
||||
},
|
||||
},
|
||||
],
|
||||
}
|
||||
```
|
||||
|
||||
### Message created / updated
|
||||
|
||||
```typescript
|
||||
{
|
||||
records: [
|
||||
{
|
||||
key: "null",
|
||||
value: {
|
||||
id: "Message",
|
||||
properties: {
|
||||
_kg_user_id: string; //Console wide user id (based on the console id), prefer to use this one
|
||||
_kg_email_id: string; //Console wide user id (based on the email md5)
|
||||
_kg_company_id: string; //Console wide company id
|
||||
message_thread_id: message.thread_id,
|
||||
message_content: string; //Empty if user requested not to share data to KG
|
||||
message_created_at: number;
|
||||
message_updated_at: number;
|
||||
type_message: string;
|
||||
company_id: string; //Internal to Twake company id
|
||||
workspace_id: string;
|
||||
channel_id: string;
|
||||
user_id: string; //Internal to Twake user id
|
||||
},
|
||||
},
|
||||
},
|
||||
],
|
||||
}
|
||||
```
|
||||
|
||||
### Company created / updated
|
||||
|
||||
```typescript
|
||||
{
|
||||
records: [
|
||||
{
|
||||
key: "null",
|
||||
value: {
|
||||
id: "Company",
|
||||
properties: {
|
||||
_kg_company_id: string; //Console wide company id
|
||||
company_id: string; //Internal to Twake company id
|
||||
company_name: string;
|
||||
},
|
||||
},
|
||||
},
|
||||
],
|
||||
}
|
||||
```
|
||||
|
||||
### Workspace created / updated
|
||||
|
||||
```typescript
|
||||
{
|
||||
records: [
|
||||
{
|
||||
key: "null",
|
||||
value: {
|
||||
id: "Workspace",
|
||||
properties: {
|
||||
_kg_company_id: string; //Console wide company id
|
||||
company_id: string; //Internal to Twake company id
|
||||
workspace_id: string; //Internal to Twake workspace id
|
||||
workspace_name: string;
|
||||
},
|
||||
},
|
||||
},
|
||||
],
|
||||
}
|
||||
```
|
||||
|
||||
## Sending events to Twake from the KG
|
||||
|
||||
Twake listen at at:
|
||||
`POST https://domain/internal/services/knowledge-graph/v1/push`
|
||||
|
||||
Authorised by a Token authorization header:
|
||||
`Authorization: Token {some token defined together}`
|
||||
|
||||
And with the following data in JSON:
|
||||
|
||||
```typescript
|
||||
{
|
||||
events: [KnowledgeGraphCallbackEvent, KnowledgeGraphCallbackEvent, KnowledgeGraphCallbackEvent, ...]
|
||||
}
|
||||
|
||||
type KnowledgeGraphCallbackEvent = {
|
||||
recipients: {
|
||||
type: "user";
|
||||
id: string; // KG user id which is a md5 of the email
|
||||
}[];
|
||||
event: {
|
||||
type: "user_tags"; //More events will be added later
|
||||
data: {
|
||||
//For user_tags event only
|
||||
tags?: {
|
||||
value: string;
|
||||
weight: number;
|
||||
}[];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
```
|
||||
|
||||
The reply will be if everything was alright:
|
||||
|
||||
```typescript
|
||||
{
|
||||
"status": "success"
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user