1. Добавляем страницу.
2. В контекст добавляем свойства:
3. Выносим на страницу виджет код.
4. Заполняем виджет код.
HTML:
<style>
table {
margin: auto;
width: 80%;
border-collapse: collapse;
}
td,
th {
border-top: 1px solid black;
border-bottom: 1px solid black;
padding: 8px;
}
th {
width: 20%;
border-right: none;
border-left: none;
}
td:first-child {
width: 15%;
border-right: none;
}
td:last-child {
width: 65%;
border-left: none;
}
</style>
<table>
<thead>
<tr>
<th>Время</th>
<th>Имя</th>
<th>Сообщение</th>
</tr>
</thead>
<tbody id="chat-table"></tbody>
</table>
<script>
var data = <%= Context.data.json %>;
function renderTable(data) {
const tbody = document.querySelector('#chat-table');
tbody.innerHTML = '';
data.forEach(({ time, name, message }) => {
const tr = document.createElement('tr');
const tdTime = document.createElement('td');
tdTime.textContent = time;
const tdName = document.createElement('td');
tdName.textContent = name;
const tdMessage = document.createElement('td');
tdMessage.textContent = message;
tr.appendChild(tdTime);
tr.appendChild(tdName);
tr.appendChild(tdMessage);
tbody.appendChild(tr);
});
}
renderTable(data);
</script>
5. Добавляем на форму виджет надпись со следующими настройками.
HTML стили:
HTML:
text-align: center; color: rgb(224, 62, 45); margin-bottom: 10px; margin-left: 40%; font-weight: bold;margin-top: 10px
6. Выносим свойство на страницу Сообщение
7. Переходим в Сценарии и вставляем код
HTML:
declare const console: any;
type Json_message = {
time:string,
name:string,
message:string
}
Context.data.json = "";
async function onInit (): Promise<void> {
}
async function message(): Promise<void> {
if(Context.data.message != undefined && Context.data.message.trim() !=""){
let name_user = await System.users.getCurrentUser();
Context.data.time = new Datetime().format("hh:mm:ss");
Context.data.name = name_user.data.__name.toString();
let json_message : Json_message [] = [];
if(Context.data.json != "" && Context.data.json){
json_message = JSON.parse(Context.data.json);
let new_record = {} as Json_message;
new_record.name = name_user.data.__name.toString();
new_record.time = new Datetime().format("hh:mm:ss");
new_record.message = Context.data.message;
json_message.push(new_record);
}else{
let new_record = {} as Json_message;
new_record.name = name_user.data.__name.toString();
new_record.time = new Datetime().format("hh:mm:ss");
new_record.message = Context.data.message;
json_message.push(new_record);
}
Context.data.json = JSON.stringify(json_message);
let mes = Context.data.message;
Context.data.message = "";
Context.data.bool = true;
const req_mes = await fetch('https://api.openai.com/v1/completions', {
method: 'POST',
headers: {
"Authorization": 'Bearer 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',
"Content-Type": 'application/json'
},
body: JSON.stringify({
"model": "text-davinci-003",
"prompt": mes,
"max_tokens": 200,
"temperature": 0.7
})
});
let json_req_mes = await req_mes.json();
Context.data.answer = json_req_mes["choices"][0]["text"];
let new_record = {} as Json_message;
new_record.name = "GPT";
new_record.time = new Datetime().format("hh:mm:ss");
new_record.message = json_req_mes["choices"][0]["text"];
json_message.push(new_record);
Context.data.json = JSON.stringify(json_message);
Context.data.bool = false;
}
}
В заголовках запроса указываем свой API ключ , ключ можно получить по ссылке - https://platform.openai.com/account/api-keys ( для получения необходимо иметь действующий аккаунт ).
"Authorization": 'Bearer Тут должен быть ваш ключ'
8. Добавляем кнопку на форму со следующими настройками
9. Сохраняем результат.
10. Тестируем.