in src/zgoog_conversation_agent/zgoog_cl_conversation_agent.clas.abap [0:0]
METHOD update_conversation_history.
DATA:
ls_chat_hist TYPE zgoog_conv_hist,
lv_timestamp TYPE timestamp,
lv_content_xstring TYPE xstring.
FIELD-SYMBOLS:
<ls_candidate> TYPE /goog/cl_aiplatform_v1=>ty_690.
IF gs_current_conversation IS NOT INITIAL.
APPEND gs_current_conversation TO gt_conversation_history.
ENDIF.
IF gs_content_response IS NOT INITIAL.
LOOP AT gs_content_response-candidates ASSIGNING <ls_candidate>.
APPEND <ls_candidate>-content TO gt_conversation_history.
ENDLOOP.
ENDIF.
ls_chat_hist-session_id = gv_session_id.
GET TIME STAMP FIELD lv_timestamp.
ls_chat_hist-start_time = lv_timestamp.
ls_chat_hist-user_name = sy-uname.
ls_chat_hist-content = /goog/cl_json_util=>serialize_json( is_data = gt_conversation_history ).
CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
EXPORTING
text = ls_chat_hist-content
IMPORTING
buffer = lv_content_xstring
EXCEPTIONS
failed = 1
OTHERS = 2.
IF sy-subrc <> 0.
CALL METHOD /goog/cl_vertex_ai_sdk_utility=>raise_error
EXPORTING
iv_ret_code = 462
iv_err_text = |Error while encoding conversation to xstring, SY_SUBRC - | && sy-subrc.
ENDIF.
ls_chat_hist-content = cl_http_utility=>encode_x_base64( lv_content_xstring ).
MODIFY zgoog_conv_hist FROM ls_chat_hist.
IF sy-subrc <> 0.
CALL METHOD /goog/cl_vertex_ai_sdk_utility=>raise_error
EXPORTING
iv_ret_code = 462
iv_err_text = |Conversation History update not successful for the Session ID, SY_SUBRC - | && sy-subrc.
ENDIF.