fix: messagefeedbackapi support content (#11716)

Signed-off-by: weiyang <24080293@smb956101.com>
Co-authored-by: weiyang <24080293@smb956101.com>
This commit is contained in:
liuhaoran 2024-12-22 10:45:55 +08:00 committed by GitHub
parent 03ddee3663
commit 6b49889041
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
11 changed files with 64 additions and 20 deletions

View File

@ -104,10 +104,11 @@ class MessageFeedbackApi(Resource):
parser = reqparse.RequestParser() parser = reqparse.RequestParser()
parser.add_argument("rating", type=str, choices=["like", "dislike", None], location="json") parser.add_argument("rating", type=str, choices=["like", "dislike", None], location="json")
parser.add_argument("content", type=str, location="json")
args = parser.parse_args() args = parser.parse_args()
try: try:
MessageService.create_feedback(app_model, message_id, end_user, args["rating"]) MessageService.create_feedback(app_model, message_id, end_user, args["rating"], args["content"])
except services.errors.message.MessageNotExistsError: except services.errors.message.MessageNotExistsError:
raise NotFound("Message Not Exists.") raise NotFound("Message Not Exists.")

View File

@ -151,7 +151,12 @@ class MessageService:
@classmethod @classmethod
def create_feedback( def create_feedback(
cls, app_model: App, message_id: str, user: Optional[Union[Account, EndUser]], rating: Optional[str] cls,
app_model: App,
message_id: str,
user: Optional[Union[Account, EndUser]],
rating: Optional[str],
content: Optional[str],
) -> MessageFeedback: ) -> MessageFeedback:
if not user: if not user:
raise ValueError("user cannot be None") raise ValueError("user cannot be None")
@ -164,6 +169,7 @@ class MessageService:
db.session.delete(feedback) db.session.delete(feedback)
elif rating and feedback: elif rating and feedback:
feedback.rating = rating feedback.rating = rating
feedback.content = content
elif not rating and not feedback: elif not rating and not feedback:
raise ValueError("rating cannot be None when feedback not exists") raise ValueError("rating cannot be None when feedback not exists")
else: else:
@ -172,6 +178,7 @@ class MessageService:
conversation_id=message.conversation_id, conversation_id=message.conversation_id,
message_id=message.id, message_id=message.id,
rating=rating, rating=rating,
content=content,
from_source=("user" if isinstance(user, EndUser) else "admin"), from_source=("user" if isinstance(user, EndUser) else "admin"),
from_end_user_id=(user.id if isinstance(user, EndUser) else None), from_end_user_id=(user.id if isinstance(user, EndUser) else None),
from_account_id=(user.id if isinstance(user, Account) else None), from_account_id=(user.id if isinstance(user, Account) else None),

View File

@ -346,6 +346,9 @@ The text generation application offers non-session support and is ideal for tran
<Property name='user' type='string' key='user'> <Property name='user' type='string' key='user'>
User identifier, defined by the developer's rules, must be unique within the application. User identifier, defined by the developer's rules, must be unique within the application.
</Property> </Property>
<Property name='content' type='string' key='content'>
The specific content of message feedback.
</Property>
</Properties> </Properties>
### Response ### Response
@ -353,7 +356,7 @@ The text generation application offers non-session support and is ideal for tran
</Col> </Col>
<Col sticky> <Col sticky>
<CodeGroup title="Request" tag="POST" label="/messages/:message_id/feedbacks" targetCode={`curl -X POST '${props.appDetail.api_base_url}/messages/:message_id/feedbacks \\\n --header 'Authorization: Bearer {api_key}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n "rating": "like",\n "user": "abc-123"\n}'`}> <CodeGroup title="Request" tag="POST" label="/messages/:message_id/feedbacks" targetCode={`curl -X POST '${props.appDetail.api_base_url}/messages/:message_id/feedbacks \\\n --header 'Authorization: Bearer {api_key}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n "rating": "like",\n "user": "abc-123",\n "content": "message feedback information"\n}'`}>
```bash {{ title: 'cURL' }} ```bash {{ title: 'cURL' }}
curl -X POST '${props.appDetail.api_base_url}/messages/:message_id/feedbacks' \ curl -X POST '${props.appDetail.api_base_url}/messages/:message_id/feedbacks' \
@ -361,7 +364,8 @@ The text generation application offers non-session support and is ideal for tran
--header 'Content-Type: application/json' \ --header 'Content-Type: application/json' \
--data-raw '{ --data-raw '{
"rating": "like", "rating": "like",
"user": "abc-123" "user": "abc-123",
"content": "message feedback information"
}' }'
``` ```

View File

@ -345,6 +345,9 @@ import { Row, Col, Properties, Property, Heading, SubProperty, Paragraph } from
<Property name='user' type='string' key='user'> <Property name='user' type='string' key='user'>
開発者のルールで定義されたユーザー識別子。アプリケーション内で一意である必要があります。 開発者のルールで定義されたユーザー識別子。アプリケーション内で一意である必要があります。
</Property> </Property>
<Property name='content' type='string' key='content'>
メッセージのフィードバックです。
</Property>
</Properties> </Properties>
### レスポンス ### レスポンス
@ -352,7 +355,7 @@ import { Row, Col, Properties, Property, Heading, SubProperty, Paragraph } from
</Col> </Col>
<Col sticky> <Col sticky>
<CodeGroup title="Request" tag="POST" label="/messages/:message_id/feedbacks" targetCode={`curl -X POST '${props.appDetail.api_base_url}/messages/:message_id/feedbacks \\\n --header 'Authorization: Bearer {api_key}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n "rating": "like",\n "user": "abc-123"\n}'`}> <CodeGroup title="Request" tag="POST" label="/messages/:message_id/feedbacks" targetCode={`curl -X POST '${props.appDetail.api_base_url}/messages/:message_id/feedbacks \\\n --header 'Authorization: Bearer {api_key}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n "rating": "like",\n "user": "abc-123",\n "content": "message feedback information"\n}'`}>
```bash {{ title: 'cURL' }} ```bash {{ title: 'cURL' }}
curl -X POST '${props.appDetail.api_base_url}/messages/:message_id/feedbacks' \ curl -X POST '${props.appDetail.api_base_url}/messages/:message_id/feedbacks' \
@ -360,7 +363,8 @@ import { Row, Col, Properties, Property, Heading, SubProperty, Paragraph } from
--header 'Content-Type: application/json' \ --header 'Content-Type: application/json' \
--data-raw '{ --data-raw '{
"rating": "like", "rating": "like",
"user": "abc-123" "user": "abc-123",
"content": "message feedback information"
}' }'
``` ```

View File

@ -320,6 +320,9 @@ import { Row, Col, Properties, Property, Heading, SubProperty } from '../md.tsx'
<Property name='user' type='string' key='user'> <Property name='user' type='string' key='user'>
用户标识,由开发者定义规则,需保证用户标识在应用内唯一。 用户标识,由开发者定义规则,需保证用户标识在应用内唯一。
</Property> </Property>
<Property name='content' type='string' key='content'>
消息反馈的具体信息。
</Property>
</Properties> </Properties>
### Response ### Response
@ -327,7 +330,7 @@ import { Row, Col, Properties, Property, Heading, SubProperty } from '../md.tsx'
</Col> </Col>
<Col sticky> <Col sticky>
<CodeGroup title="Request" tag="POST" label="/messages/:message_id/feedbacks" targetCode={`curl -X POST '${props.appDetail.api_base_url}/messages/:message_id/feedbacks \\\n--header 'Authorization: Bearer {api_key}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n "rating": "like",\n "user": "abc-123"\n}'`}> <CodeGroup title="Request" tag="POST" label="/messages/:message_id/feedbacks" targetCode={`curl -X POST '${props.appDetail.api_base_url}/messages/:message_id/feedbacks \\\n--header 'Authorization: Bearer {api_key}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n "rating": "like",\n "user": "abc-123",\n "content": "message feedback information"\n}'`}>
```bash {{ title: 'cURL' }} ```bash {{ title: 'cURL' }}
curl -X POST '${props.appDetail.api_base_url}/messages/:message_id/feedbacks' \ curl -X POST '${props.appDetail.api_base_url}/messages/:message_id/feedbacks' \
@ -335,7 +338,8 @@ import { Row, Col, Properties, Property, Heading, SubProperty } from '../md.tsx'
--header 'Content-Type: application/json' \ --header 'Content-Type: application/json' \
--data-raw '{ --data-raw '{
"rating": "like", "rating": "like",
"user": "abc-123" "user": "abc-123",
"content": "message feedback information"
}' }'
``` ```

View File

@ -444,6 +444,9 @@ Chat applications support session persistence, allowing previous chat history to
<Property name='user' type='string' key='user'> <Property name='user' type='string' key='user'>
User identifier, defined by the developer's rules, must be unique within the application. User identifier, defined by the developer's rules, must be unique within the application.
</Property> </Property>
<Property name='content' type='string' key='content'>
The specific content of message feedback.
</Property>
</Properties> </Properties>
### Response ### Response
@ -451,7 +454,7 @@ Chat applications support session persistence, allowing previous chat history to
</Col> </Col>
<Col sticky> <Col sticky>
<CodeGroup title="Request" tag="POST" label="/messages/:message_id/feedbacks" targetCode={`curl -X POST '${props.appDetail.api_base_url}/messages/:message_id/feedbacks \\\n --header 'Authorization: Bearer {api_key}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n "rating": "like",\n "user": "abc-123"\n}'`}> <CodeGroup title="Request" tag="POST" label="/messages/:message_id/feedbacks" targetCode={`curl -X POST '${props.appDetail.api_base_url}/messages/:message_id/feedbacks \\\n --header 'Authorization: Bearer {api_key}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n "rating": "like",\n "user": "abc-123",\n "content": "message feedback information"\n}'`}>
```bash {{ title: 'cURL' }} ```bash {{ title: 'cURL' }}
curl -X POST '${props.appDetail.api_base_url}/messages/:message_id/feedbacks' \ curl -X POST '${props.appDetail.api_base_url}/messages/:message_id/feedbacks' \
@ -459,7 +462,8 @@ Chat applications support session persistence, allowing previous chat history to
--header 'Content-Type: application/json' \ --header 'Content-Type: application/json' \
--data-raw '{ --data-raw '{
"rating": "like", "rating": "like",
"user": "abc-123" "user": "abc-123",
"content": "message feedback information"
}' }'
``` ```

View File

@ -444,6 +444,9 @@ import { Row, Col, Properties, Property, Heading, SubProperty, Paragraph } from
<Property name='user' type='string' key='user'> <Property name='user' type='string' key='user'>
ユーザー識別子、開発者のルールによって定義され、アプリケーション内で一意でなければなりません。 ユーザー識別子、開発者のルールによって定義され、アプリケーション内で一意でなければなりません。
</Property> </Property>
<Property name='content' type='string' key='content'>
メッセージのフィードバックです。
</Property>
</Properties> </Properties>
### 応答 ### 応答
@ -451,7 +454,7 @@ import { Row, Col, Properties, Property, Heading, SubProperty, Paragraph } from
</Col> </Col>
<Col sticky> <Col sticky>
<CodeGroup title="リクエスト" tag="POST" label="/messages/:message_id/feedbacks" targetCode={`curl -X POST '${props.appDetail.api_base_url}/messages/:message_id/feedbacks \\\n --header 'Authorization: Bearer {api_key}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n "rating": "like",\n "user": "abc-123"\n}'`}> <CodeGroup title="リクエスト" tag="POST" label="/messages/:message_id/feedbacks" targetCode={`curl -X POST '${props.appDetail.api_base_url}/messages/:message_id/feedbacks \\\n --header 'Authorization: Bearer {api_key}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n "rating": "like",\n "user": "abc-123",\n "content": "message feedback information"\n}'`}>
```bash {{ title: 'cURL' }} ```bash {{ title: 'cURL' }}
curl -X POST '${props.appDetail.api_base_url}/messages/:message_id/feedbacks' \ curl -X POST '${props.appDetail.api_base_url}/messages/:message_id/feedbacks' \
@ -459,7 +462,8 @@ import { Row, Col, Properties, Property, Heading, SubProperty, Paragraph } from
--header 'Content-Type: application/json' \ --header 'Content-Type: application/json' \
--data-raw '{ --data-raw '{
"rating": "like", "rating": "like",
"user": "abc-123" "user": "abc-123",
"content": "message feedback information"
}' }'
``` ```

View File

@ -450,6 +450,9 @@ import { Row, Col, Properties, Property, Heading, SubProperty } from '../md.tsx'
<Property name='user' type='string' key='user'> <Property name='user' type='string' key='user'>
用户标识,由开发者定义规则,需保证用户标识在应用内唯一。 用户标识,由开发者定义规则,需保证用户标识在应用内唯一。
</Property> </Property>
<Property name='content' type='string' key='content'>
消息反馈的具体信息。
</Property>
</Properties> </Properties>
### Response ### Response
@ -457,7 +460,7 @@ import { Row, Col, Properties, Property, Heading, SubProperty } from '../md.tsx'
</Col> </Col>
<Col sticky> <Col sticky>
<CodeGroup title="Request" tag="POST" label="/messages/:message_id/feedbacks" targetCode={`curl -X POST '${props.appDetail.api_base_url}/messages/:message_id/feedbacks \\\n--header 'Authorization: Bearer {api_key}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n "rating": "like",\n "user": "abc-123"\n}'`}> <CodeGroup title="Request" tag="POST" label="/messages/:message_id/feedbacks" targetCode={`curl -X POST '${props.appDetail.api_base_url}/messages/:message_id/feedbacks \\\n--header 'Authorization: Bearer {api_key}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n "rating": "like",\n "user": "abc-123",\n "content": "message feedback information"\n}'`}>
```bash {{ title: 'cURL' }} ```bash {{ title: 'cURL' }}
curl -X POST '${props.appDetail.api_base_url}/messages/:message_id/feedbacks' \ curl -X POST '${props.appDetail.api_base_url}/messages/:message_id/feedbacks' \
@ -465,7 +468,8 @@ import { Row, Col, Properties, Property, Heading, SubProperty } from '../md.tsx'
--header 'Content-Type: application/json' \ --header 'Content-Type: application/json' \
--data-raw '{ --data-raw '{
"rating": "like", "rating": "like",
"user": "abc-123" "user": "abc-123",
"content": "message feedback information"
}' }'
``` ```

View File

@ -408,6 +408,9 @@ Chat applications support session persistence, allowing previous chat history to
<Property name='user' type='string' key='user'> <Property name='user' type='string' key='user'>
User identifier, defined by the developer's rules, must be unique within the application. User identifier, defined by the developer's rules, must be unique within the application.
</Property> </Property>
<Property name='content' type='string' key='content'>
The specific content of message feedback.
</Property>
</Properties> </Properties>
### Response ### Response
@ -415,7 +418,7 @@ Chat applications support session persistence, allowing previous chat history to
</Col> </Col>
<Col sticky> <Col sticky>
<CodeGroup title="Request" tag="POST" label="/messages/:message_id/feedbacks" targetCode={`curl -X POST '${props.appDetail.api_base_url}/messages/:message_id/feedbacks \\\n --header 'Authorization: Bearer {api_key}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n "rating": "like",\n "user": "abc-123"\n}'`}> <CodeGroup title="Request" tag="POST" label="/messages/:message_id/feedbacks" targetCode={`curl -X POST '${props.appDetail.api_base_url}/messages/:message_id/feedbacks \\\n --header 'Authorization: Bearer {api_key}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n "rating": "like",\n "user": "abc-123",\n "content": "message feedback information"\n}'`}>
```bash {{ title: 'cURL' }} ```bash {{ title: 'cURL' }}
curl -X POST '${props.appDetail.api_base_url}/messages/:message_id/feedbacks' \ curl -X POST '${props.appDetail.api_base_url}/messages/:message_id/feedbacks' \
@ -423,7 +426,8 @@ Chat applications support session persistence, allowing previous chat history to
--header 'Content-Type: application/json' \ --header 'Content-Type: application/json' \
--data-raw '{ --data-raw '{
"rating": "like", "rating": "like",
"user": "abc-123" "user": "abc-123",
"content": "message feedback information"
}' }'
``` ```

View File

@ -408,6 +408,9 @@ import { Row, Col, Properties, Property, Heading, SubProperty, Paragraph } from
<Property name='user' type='string' key='user'> <Property name='user' type='string' key='user'>
ユーザー識別子、開発者のルールで定義され、アプリケーション内で一意でなければなりません。 ユーザー識別子、開発者のルールで定義され、アプリケーション内で一意でなければなりません。
</Property> </Property>
<Property name='content' type='string' key='content'>
メッセージのフィードバックです。
</Property>
</Properties> </Properties>
### 応答 ### 応答
@ -415,7 +418,7 @@ import { Row, Col, Properties, Property, Heading, SubProperty, Paragraph } from
</Col> </Col>
<Col sticky> <Col sticky>
<CodeGroup title="リクエスト" tag="POST" label="/messages/:message_id/feedbacks" targetCode={`curl -X POST '${props.appDetail.api_base_url}/messages/:message_id/feedbacks \\\n --header 'Authorization: Bearer {api_key}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n "rating": "like",\n "user": "abc-123"\n}'`}> <CodeGroup title="リクエスト" tag="POST" label="/messages/:message_id/feedbacks" targetCode={`curl -X POST '${props.appDetail.api_base_url}/messages/:message_id/feedbacks \\\n --header 'Authorization: Bearer {api_key}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n "rating": "like",\n "user": "abc-123",\n "content": "message feedback information"\n}'`}>
```bash {{ title: 'cURL' }} ```bash {{ title: 'cURL' }}
curl -X POST '${props.appDetail.api_base_url}/messages/:message_id/feedbacks' \ curl -X POST '${props.appDetail.api_base_url}/messages/:message_id/feedbacks' \
@ -423,7 +426,8 @@ import { Row, Col, Properties, Property, Heading, SubProperty, Paragraph } from
--header 'Content-Type: application/json' \ --header 'Content-Type: application/json' \
--data-raw '{ --data-raw '{
"rating": "like", "rating": "like",
"user": "abc-123" "user": "abc-123",
"content": "message feedback information"
}' }'
``` ```

View File

@ -423,6 +423,9 @@ import { Row, Col, Properties, Property, Heading, SubProperty } from '../md.tsx'
<Property name='user' type='string' key='user'> <Property name='user' type='string' key='user'>
用户标识,由开发者定义规则,需保证用户标识在应用内唯一。 用户标识,由开发者定义规则,需保证用户标识在应用内唯一。
</Property> </Property>
<Property name='content' type='string' key='content'>
消息反馈的具体信息。
</Property>
</Properties> </Properties>
### Response ### Response
@ -430,7 +433,7 @@ import { Row, Col, Properties, Property, Heading, SubProperty } from '../md.tsx'
</Col> </Col>
<Col sticky> <Col sticky>
<CodeGroup title="Request" tag="POST" label="/messages/:message_id/feedbacks" targetCode={`curl -X POST '${props.appDetail.api_base_url}/messages/:message_id/feedbacks \\\n--header 'Authorization: Bearer {api_key}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n "rating": "like",\n "user": "abc-123"\n}'`}> <CodeGroup title="Request" tag="POST" label="/messages/:message_id/feedbacks" targetCode={`curl -X POST '${props.appDetail.api_base_url}/messages/:message_id/feedbacks \\\n--header 'Authorization: Bearer {api_key}' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n "rating": "like",\n "user": "abc-123",\n "content": "message feedback information"\n}'`}>
```bash {{ title: 'cURL' }} ```bash {{ title: 'cURL' }}
curl -X POST '${props.appDetail.api_base_url}/messages/:message_id/feedbacks' \ curl -X POST '${props.appDetail.api_base_url}/messages/:message_id/feedbacks' \
@ -438,7 +441,8 @@ import { Row, Col, Properties, Property, Heading, SubProperty } from '../md.tsx'
--header 'Content-Type: application/json' \ --header 'Content-Type: application/json' \
--data-raw '{ --data-raw '{
"rating": "like", "rating": "like",
"user": "abc-123" "user": "abc-123",
"content": "message feedback information"
}' }'
``` ```