Temat: Płeć + imię + szablon

Mam takie pytanie o możliwość zautomatyzowania procesu w TheBat!
Dostaję wiadomość typu:
--------------
Imię i nazwisko: Jan Kowalski
maila@wp.pl
Witam, proszę o pomoc
--------------
(wiersza są zawsze w takiej kolejności  rozmieszczone)


Odpowiadając na nią mam gotowy szablon zaczynający się od
Dzień dobry,
...........


w miejsce kropek chciałbym by TheBat! wstawiał mi formę grzecznościową w tym przypadku Panie Janie.

Problem jest na tyle skomplikowany, że

- po pierwsze Bat musi identyfikować czy koresponduję z kobietą czy mężczyzną
- po drugie właściwie odmieniać imię

Czy to do osiągnięcia ?

2

Odp: Płeć + imię + szablon

Problem rzeczywiście nie jest banalny w przypadku języków takich jak polski. Dosyć dawno temu, gdy funkcjonowały pocztowe listy dyskusyjne poświęcone The Bat!, były jakieś próby rozwiązania tego problemu. O ile dobrze pamiętam, wykorzystywano tam pole "Płeć" z książki adresowej, ale w Twoim przypadku raczej nie będzie to miało zastosowania.

Postaram się odszukać w archiwum ten wątek i może uda się to rozwiązać. Mam także pewien pomysł z wykorzystaniem słownika imion męskich i żeńskich w postaci pliku tekstowego, ale muszę to dokładnie sprawdzić - jak zadziała, dam znać.

3

Odp: Płeć + imię + szablon

Udało się rozwiązać problem za pomocą szablonu podręcznego z wyrażeniami regularnymi i pliku tekstowego zawierającego polskie imiona wraz z ich odmianą (wołacz) i znacznikiem płci (litera "M" lub "F"). Plik ma w oddzielnych wierszach wpisane imiona w formacie Imię Imię_w_wołaczu Płeć. Podany niżej szablon podręczny nazwałem Odmiana_imion. Wynikiem działania tego szablonu jest tekst z powitaniem i odpowiednio odmienionym imieniem wybranym na podstawie oryginalnej wiadomości zawierającej imię i nazwisko (tak jak podałeś). Wynik działania szablonu musisz wstawić na początek swojego szablonu odpowiedzi za pomocą makropolecenia %QInclude="Odmiana_imion".

%SetPattRegexp="(?isU)^(Imię i nazwisko:\s)(.*)\s"%-
%RegexpBlindMatch(%OText)%-
%_Imie="%SubPatt(2)"%-
%_Imiona=%Put("C:\Imiona_odmiana.txt")%-
%SetPattRegexp="(?isU)^(%_Imie)\s(.*)\s(.)"%-
%RegexpBlindMatch(%_Imiona)%-
%_Wolacz="%SubPatt(2)"%-
%_Plec="%SubPatt(3)"%-
Dzień dobry,

%If:%_Plec=='M':"Panie %_Wolacz, ":%-
$%If:%_Plec=='F':"Pani %_Wolacz, ":""$

Jak to działa? Najpierw za pomocą wyrażenia regularnego jest wyodrębniane z oryginalnej wiadomości imię i zapisywane do zmiennej %_Imie. Następnie do zmiennej %_Imiona jest wstawiana zawartość pliku C:\Imiona_odmiana.txt (przesyłam go prywatnie, pamiętaj o zachowaniu ścieżki lub jej modyfikacji w szablonie). Za pomocą innego wyrażenia w zmiennej %_Imiona jest wyszukiwana wartość %_Imie, a po wyszukaniu pobierana jest odpowiednio odmiana imienia (zmienna %Wolacz) i znacznik płci (zmienna %_Plec). Dalsze instrukcje warunkowe na podstawie zawartości zmiennej %_Plec (M, F lub pusta) wstawiają do odpowiedzi właściwy tekst.

4

Odp: Płeć + imię + szablon

WOW !! Jestem pod wrażeniem i wygląda na to że musi zadziałać jak tylko raz jeszcze pomożesz mi bo zapewne gdzieś popełniłem błąd przy opisie.

Póki co teraz stosując szablon dostaję jako zwrotkę tylko:

Dzień dobry

Scieżka do pliku i nazwa jest poprawna
C:\Imiona_odmiana.txt

Może źle opisałem dokładny wygląd wiadomości jaką dostaję i skrypt zaczytuje nie z tej linijki (a sam nie umiem tego poprawić)  tak więc wklejam ją tu:

https://uploadfile.pl/pokaz/1624992---wury.html

Z góry raz jeszcze dziękuję smile

5

Odp: Płeć + imię + szablon

Muszę Cię prosić o przesłanie prywatnie przykładowej wiadomości wyeksportowanej z The Bat!. Tylko wtedy będzie można postawić diagnozę co jest nie tak. Sprawdzałem to na kilku przykładach u siebie i wszystko działało, ale lepiej mieć oryginał do dalszych badań.

6

Odp: Płeć + imię + szablon

Czy wiadomość, jaką otrzymujesz, jest w formacie HTML? Jeżeli tak, to spróbuj zmienić trzy pierwsze wiersze w szablonie na następujące:

%SetPattRegexp="(?isU)^(.*)(Imię i nazwisko:\s)(.*)\s"%-
%RegexpBlindMatch(%OText)%-
%_Imie="%SubPatt(3)"%-

To powinno załatwiać sprawę - sądziłem, że oryginał jest w formacie czysto tekstowym i wtedy pierwszy szablon powinien działać. Przy HTML prawdopodobnie tekst "Imię i nazwisko" nie rozpoczyna się na samym początku wiersza i dlatego należy stosować ten nowy wariant. Ten wariant jest bardziej ogólny.

7

Odp: Płeć + imię + szablon

Tak to html smile Teraz działa smile Pięknie dziękuję smile
Jeszcze tylko mały szczególik
teraz jest tak \

Dzień Dobry, Pani Karolino,

a ja chciałbym:

Dzień Dobry,
Pani Karolino,

banalne ale nie umiem smile Pięknie dziękuje i naprawdę BARDZO DOCENIAM !! smile

8

Odp: Płeć + imię + szablon

Mam udało mi się smile

9

Odp: Płeć + imię + szablon

Jak zawsze chętnie wesprę forum jeśli jest jakaś ku temu sposobność wink a szkoda że nie ma smile

10

Odp: Płeć + imię + szablon

A jak to będzie działać i co będzie się działo, jeśli oryginalny plik nie zawiera imienia?