https://www.teltel.io/v2/login
email: evald@asya.ai pass: jh1K0xU8C8KW
SIP device var atrast šeit: https://www.teltel.io/account/call_flow Dokumentācija: https://doc.teltel.io/en/integration-guide https://apidoc.teltel.io (ir arī REST API, bet cik man zināms ne priekš zvanīšanas)
Kodēt iekš https://github.com/asya-ai/pp-robocaller
Fonā nepieciešams apmācīt TTS modeli V2, bet pagaidām var izmantot “Model V1”
Izveidot Python Flask app, kura strādā ar:
PostgreSQL datu bāzi (dev vide zemāk)
🔴
STT websocket based realtime (Mārcis iedos API key) https://stt.asya.ai/docs Kods ir šeit: https://github.com/asya-ai/asya-master-api (pievienoju tevi). Man liekas kaut kas nav pareizi sakodēts ar websocket sessijām, jo 2 lietotāji vienlaicīgi izmanto, tad sāk miksēties responses. Ja nepieciešams nokomentē Mārcim kādas izmaiņas tur jāpalīdz veikt
TTS websocket based realtime (pats izveido API key)
Tulkošanas API (Mārcis iedos key), tur ari ir websocket
Izvietota uz ventspils-1
servera zem lietotāja robocaller
🔴
Vēlāk būs arī eldigen integrācija uz generic question answering
Nepieciešams veikt integrācijas ar teltel SIP vai RTP
Priekš UX izmantot Bootrstrap Flask https://bootstrap-flask.readthedocs.io/en/stable/basic/
Nepieciešams izveidot UX, kurā var ģenerēt sarunas skriptu soli pa solim, datu struktūras (prefix visam robo_, jo vēlāk pievienosim PP repo iespējams) Visām datu bāzes tabulām pretī dataclasses
robo_organization - organizācija
robo_organization_id
robo_organization_uuid - nekad lietotājam nerādam ID, bet rādam UUID
robo_organization_name
is_deleted (vienmēr soft delete)
created
modified
robo_user - lietotājs, vienā organizācijā daudzi
robo_user_id
robo_user_uuid
robo_organization_id
password
limit_minutes
is_deleted
created
modified
robo_intent - nodoms, kuru atpazīst pēc frāzēm embeddings vai regex
robo_intent_id
robo_intent_uuid
robo_organization_id
intent_name
intent_language: varchar
is_deleted (vienmēr soft delete)
created
modified
robo_intent_phrases - katram nodomam daudz frāzes (ievad ērtībai ar textarea jaunās rindās). Var būt gan embeddings, gan regex kopā kā vairāki phrases
robo_intent_phrase_id
robo_intent_phrase_uuid
robo_organization_id
robo_intent_id
intent_language: varchar
phrase_text (reg frāzes var atpazīt vai piemērus pēc sentence embeddings) - šeit neizmantojam īstu regex, bet vnk “*” nozīmē jebkādas vārda beigas vai sākums, atstarpes atdala secīgus vārdus frāzē. Case insensitve
phrase_type: VARCHAR - REGEX, EMBEDDING
phrase_text_en: Ja nav zvaigznītes - Embedings vienmēr taisam no English
phrase_embedding_en: PGVector format (dabūt no betijas info kādu embedding izmantot piemērus no eldigen koda ) - šis ir tikai tām frāzēm, kuras nesatur “*” zvaigznītes
created (vienmēr hard delete)
robo_extracts - dati, kurus ar dažādu vaicājumu palīdzību var izgūt no konkrēta message sarunas laikā
robo_extract_id
robo_extract_uuid
robo_organization_id
extract_field_name
is_deleted (vienmēr soft delete)
created
modified
robo_extract_prompt (sākotnēji šim jānotiek asinhroni, nedrīkst bremzēt sarunas - var būt tikai atzaros!) - vaicājums ar kuru izgūst datus, izmantojot LLM (pagaidām openai API, velāk mūsu)
robo_extract_prompt_id
robo_extract_prompt_uuid
robo_organization_id
robo_extract_field_id - uz kurieni nonāks izgūtais saturs (tabulās)
extract_language: varchar
extract_prompt: TEXT - Jautājums ar kuru var dabūt ārā no iepriekšējā message informāciju un saglabāt kā field “Kad tiks veikts nākamais maksājums? Diena vai datums, ja nosaukts?”
extact_prompt_en
created (vienmēr hard delete)
robo_responses - STT ģenerētās atbildes, vēlāk būs ar tokens, tagad ierakstītas, vienīgais varētu ar LLM uzģenerēt vairākus rephrase variantus, lai zvana saņēmējs nevar uzreiz atpazīt robotu. Responses kā audio faili ir jau cached uz diska
robo_response_id
robo_response_uuid
robo_organization_id
is_rephrase_enabled
response_voice (no robo_script copy)
response_language
response_text: Tas ko robots saka. Vēlāk varēs arī izmantot tokens kā {full_name}
un tos, kuri iegūti no extract vai integrations
is_deleted (vienmēr soft delete)
created
modified
robo_script - galvenais skripts, kurš izpildās
robo_script_id
robo_script_uuid
robo_organization_id
script_name
script_type: INBOUND, OUTBOUND (pašlaik bus tikai OUTBOUND)
script_voice_name (vēlāk maināms)
script_sip_device (SIP ID)
is_enabled
is_deleted (vienmēr soft delete)
created
modified
robo_script_steps - skripta soļi, kuri veido koku UX
robo_script_step_id
robo_script_step_uuid
robo_script_id
robo_organization_id
step_type: VARCHAR - CLIENT_RESPINSE, AGENT_RESPONSE, INTENT, CONDITION, EXTRACT, END_CALL - Kā python Enum, Str
robo_response_id - optional / NULL
robo_extract_id - optional
robo_intent_id - optional
condition_is_true: bool / optional / NULL
created (vienmēr hard delete)
robo_script_steps_tree - jāvar uztaisīt koku, kur zari apvienojas uz priekšu ejot
robo_script_steps_tree_id
robo_script_step_id
next_robo_script_step_id
created
robo_call_campaigns (grupa ar telefoniem, kuriem zvanīs robts) - Zvanu saraksts un zvanīšanas plāna nosacījumi ar kuriem zvana numuriem
robo_call_campaign_id
robo_call_campaign_uuid
robo_batch_name
robo_organization_id
robo_script_id : kāds script ir pieslēgts
is_deleted (vienmēr soft delete)
time_from_hours_gmt : optional (padomā varbūt šos shcedules var grudrāk sataisīt)
time_to_hours_gmt : optional
scheduled_date_from : optional
scheduled_date_to : optional
is_scheduled_monday: bool
is_scheduled_tuesday: bool
is_scheduled_wednesday: bool
is_scheduled_thursday: bool
is_scheduled_friday: bool
is_scheduled_saturday: bool
is_scheduled_sunday: bool
is_deleted (vienmēr soft delete)
created
modified
robo_call_numbers - numuri, kurus caur UX ielādē ar CSV vai manuāli
robo_call_number_id
robo_call_number_uuid
robo_call_campaign_id
robo_organization_id
phone_number: varchar
full_name: varchar (optional)
language: varchar
last_call_timestamp :NULL
number_of_times_called
number_of_times_picked
is_deleted (vienmēr soft delete)
created
modified
robo_recording - notikušais zvans ar audio un meta dadiem
robo_recording_id
robo_recording_uuid - pēc UUID saglabājam audio failu
robo_organization_id
robo_recording_steps (robot or client) - koka zari, kuri tika izpildīti un to rezultāti
robo_recording_step_id
robo_recording_step_uuid
robo_organization_id
robo_batch_call_id - 🟡 Labāk likt vairāk IDs nekā mazāk, jo vieglāk un efektīvaķi būs SELECTs
robo_batch_calls_number_id
robo_script_step_id
step_type: VARCHAR - CLIENT_RESPINSE, AGENT_RESPONSE, INTENT, CONDITION, EXTRACT, END_CALL
robo_response_id - optional / NULL
robo_extract_id - optional
robo_intent_id - optional
condition_is_true: bool / optional / NULL
robo_recording_extract_id - ja notika extract
robo_intent_evidence_rext: teksts, kas noteica intent
is_last_step
created - hard delete
robo_recording_extracts - iegūtie dati no zvana - vēlak tie tiks novirzīti uz CRM, tagad var no batch iegūt CSV, kur katra rinda zvanītājs robo_batch_calls_numbers
un kolonas robo_recording_extracts
robo_recording_extract_id
robo_recording_extract_uuid
robo_recording_step_id
robo_batch_calls_number_id
robo_organization_id
robo_extract_id
robo_extract_value: text
created - hard delete
Vēlāk vajadzēs ievākt arī statistiku pie kura atzara skriptā atbirst cilvēki
To speed up implementation
Try adding in comments pyhon code and generate Python code
Try commanding selected code to be ported using http://cursor.com (if necessary we will buy pro version)
perplexity.ai give example in Python how to ...