Skip to content

Commit 7223f7a

Browse files
authored
AI assistant (#2589)
* Updated code samples to use AI Assistant * Updated screenshot * Mentioned additional supported field types * PHP & JS CS Fixes * Updated screenshot * Removed redundant file extension
1 parent 5899626 commit 7223f7a

File tree

6 files changed

+44
-38
lines changed

6 files changed

+44
-38
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { addModule } from '../../vendor/ibexa/connector-ai/src/bundle/Resources/public/js/core/create.ai.module';
1+
import { addModule } from '@ibexa-connector-ai/src/bundle/Resources/public/js/core/create.ai.module';
22
import TranscribeAudio from './transcribe.audio';
33

44
addModule(TranscribeAudio);
Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
1-
import BaseAIComponent from '../../vendor/ibexa/connector-ai/src/bundle/Resources/public/js/core/base.ai.component';
1+
import BaseAIAssistantComponent from '@ibexa-connector-ai/src/bundle/Resources/public/js/core/base.ai.assistant.component';
2+
import Textarea from '@ibexa-connector-ai-modules/ai-assistant/fields/textarea/textarea';
23

3-
export default class TranscribeAudio extends BaseAIComponent {
4-
constructor(mainElement, config) {
5-
super(mainElement, config);
4+
export default class TranscribeAudio extends BaseAIAssistantComponent {
5+
constructor(mainElement, extraConfig) {
6+
super(mainElement, extraConfig);
67

78
this.requestHeaders = {
89
Accept: 'application/vnd.ibexa.api.ai.AudioText+json',
910
'Content-Type': 'application/vnd.ibexa.api.ai.TranscribeAudio+json',
1011
};
12+
13+
this.getRequestBody = this.getRequestBody.bind(this);
14+
this.getResponseValue = this.getResponseValue.bind(this);
15+
16+
this.replacedField = Textarea;
1117
}
1218

1319
getAudioInBase64() {
@@ -18,16 +24,15 @@ export default class TranscribeAudio extends BaseAIComponent {
1824

1925
if (request.status === 200) {
2026
return this.convertToBase64(request.responseText);
21-
} else {
22-
this.processError('Error occured when decoding the file.');
2327
}
2428
}
2529

2630
getRequestBody() {
31+
const inputValue = this.getInputValue();
2732
const body = {
2833
TranscribeAudio: {
2934
Audio: {
30-
base64: this.getAudioInBase64(),
35+
base64: inputValue,
3136
},
3237
RuntimeContext: {},
3338
},
@@ -40,20 +45,6 @@ export default class TranscribeAudio extends BaseAIComponent {
4045
return JSON.stringify(body);
4146
}
4247

43-
afterFetchData(response) {
44-
super.afterFetchData();
45-
46-
if (response) {
47-
this.outputElement.value = response.AudioText.Text.text[0];
48-
}
49-
}
50-
51-
toggle(forceEnabled) {
52-
super.toggle(forceEnabled);
53-
54-
this.outputElement.disabled = !forceEnabled || !this.outputElement.disabled;
55-
}
56-
5748
convertToBase64(data) {
5849
let binary = '';
5950

@@ -63,4 +54,15 @@ export default class TranscribeAudio extends BaseAIComponent {
6354

6455
return btoa(binary);
6556
}
57+
58+
getResponseValue(response) {
59+
return response.AudioText.Text.text[0];
60+
}
61+
62+
handleAIDialogConfirm(responseText) {
63+
this.outputElement.value = responseText;
64+
this.outputElement.dispatchEvent(new Event('input'));
65+
66+
super.handleAIDialogClose(responseText);
67+
}
6668
}

code_samples/ai_actions/config/packages/ibexa_admin_ui.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,4 @@ ibexa:
44
admin_ui_forms:
55
content_edit:
66
form_templates:
7-
- { template: '@ibexadesign/admin/ui/fieldtype/edit/form_fields_binary_ai.html.twig', priority: -10 } }
7+
- { template: '@ibexadesign/admin/ui/fieldtype/edit/form_fields_binary_ai.html.twig', priority: -10 }

code_samples/ai_actions/templates/themes/admin/admin/ui/fieldtype/edit/form_fields_binary_ai.html.twig

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,27 @@
33
{% block ezbinaryfile_preview %}
44
{{ parent() }}
55

6+
{% import '@ibexadesign/connector_ai/ui/ai_module/macros.html.twig' as ai_macros %}
7+
68
{% set transcriptFieldIdentifier = 'transcript' %}
79
{% set fieldTypeIdentifiers = form.parent.parent.vars.value|keys %}
810

911
{% if transcriptFieldIdentifier in fieldTypeIdentifiers %}
10-
{% set module_id = 'TranscribeAudio' %}
11-
{% set ai_config_id = 'transcribe_audio' %}
12-
{% set container_selector = '.ibexa-edit-content' %}
13-
{% set input_selector = '.ibexa-field-edit-preview__action--preview' %}
14-
{% set output_selector = '#ezplatform_content_forms_content_edit_fieldsData_transcript_value' %}
15-
{% set cancel_wrapper_selector = '.ibexa-field-edit-preview__media-wrapper' %}
16-
17-
{% embed '@ibexadesign/connector_ai/ui/ai_module/ai_component.html.twig' with {
18-
ai_config_id,
19-
container_selector,
20-
input_selector,
21-
output_selector,
12+
{% set use_ai_btn_attr = {
13+
class: 'btn ibexa-btn ibexa-btn--secondary ibexa-ai-component--custom-btn',
14+
module_id: 'TranscribeAudio',
15+
scroll_selector: '.ibexa-edit-content',
16+
container_selector: '.ibexa-edit-content',
17+
input_selector: '.ibexa-field-edit-preview__action--preview',
18+
output_selector: '#ezplatform_content_forms_content_edit_fieldsData_transcript_value',
19+
ai_config_id: 'transcribe_audio',
2220
} %}
23-
{% endembed %}
21+
22+
<button {{ ai_macros.attributes(use_ai_btn_attr) }}>
23+
<svg class="ibexa-icon ibexa-icon--small ibexa-icon--primary">
24+
<use xlink:href="{{ ibexa_icon_path('explore') }}"></use>
25+
</svg>
26+
{{ 'ibexa_connector_ai.use_ai.label'|trans({}, 'ibexa_connector_ai')|desc('Use AI') }}
27+
</button>
2428
{% endif %}
2529
{% endblock %}

docs/ai_actions/ai_actions_guide.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,11 +133,11 @@ Out of the box, after you configure access to the OpenAI service, the [[= produc
133133

134134
Content editors can benefit from using AI capabilities to [enhance or modify text]([[= user_doc =]]/content_management/create_edit_content_items/#ai-assistant).
135135
With a few clicks, they can improve content quality or reduce the workload.
136-
While working on content, editors can select a specific passage and request that AI performs specific actions such as: adjusting the length of the text, changing the tone, or correcting linguistic errors.
136+
While working on content, editors can request that AI performs specific actions such as: adjusting the length of the text, changing the tone, or correcting linguistic errors.
137137

138138
![AI Assistant](img/ai_assistant.png)
139139

140-
This functionality is available in content types that include a RichText field, and certain Page Builder blocks.
140+
This functionality is available in content types that include RichText, Text line, Text Block fields, and certain Page Builder blocks.
141141

142142
### Generating alternative text
143143

45.4 KB
Loading

0 commit comments

Comments
 (0)