Powrót   Forum CDRinfo.pl > Różne > Komputery - oprogramowanie i sprzęt

Komputery - oprogramowanie i sprzęt Pytania i problemy niezwiązane z nagrywaniem, backupem i grami.



Witaj Nieznajomy! Zaloguj się lub Zarejestruj

Zarejestrowani użytkownicy mają dostęp do dodatkowych opcji, lepszej wyszukiwarki oraz mniejszej ilości reklam. Rejestracja jest całkowicie darmowa!

Odpowiedz na post
 
Opcje związane z dyskusją Tryby wyświetlania
Stary 20.10.2012, 12:01   #1
andy
logged out
CDRinfo VIP
 
Avatar użytkownika andy
 
Data rejestracji: 12.07.2003
Lokalizacja: /home
Posty: 12,518
andy jest wzorem do naśladowania <650 - 999 pkt>andy jest wzorem do naśladowania <650 - 999 pkt>andy jest wzorem do naśladowania <650 - 999 pkt>andy jest wzorem do naśladowania <650 - 999 pkt>andy jest wzorem do naśladowania <650 - 999 pkt>andy jest wzorem do naśladowania <650 - 999 pkt>andy jest wzorem do naśladowania <650 - 999 pkt>andy jest wzorem do naśladowania <650 - 999 pkt>
Programowanie - sprawdzenie skryptu

Elo moto.

Od jakiegoś czasu po głowie chodził mi pomysł stworzenia skryptu/profilu do programu Tasker, który będzie odpowiadał na połączenia przychodzące kiedy mam aktywne spotkanie ze statusem zajęty.

Od kilkunastu dni po malutkim kawałeczku rozpisywałem sobie algorytm działania żeby kilka dni temu przelać to na profil taskera.

Zanim go wdrożę muszę sprawdzić czy nie ma błędów - badzo bym nie chciał aby program wysłał np. 1000 smsów :D


Założenie:
Profil aktywuje się w momencie kiedy poniższe konteksty zostaną spełnione:
  • Połączenie przychodzące;
  • Aktywny profil Spotkanie;
  • Numer osoby dzwoniącej znajduje się w książce adresowej.


Skrypt wygląda tak:



Profile: Autoresponder (18)
State: Call [ Type:Incoming Number:* ] //Kontekst przychodzące połączenie
State: Profile Active [ Name:Spotkanie ] //Kontekst aktywny profil Spotkanie
State: Variable Value [ Name:%CNAME Op:Maths: Isn't Equal To Value:%CNUM ] //Kontekst sprawdzający czy numer jest w książce. Normalnie nazwa numeru jest numerem jeżeli nie mamy jej w książce adresowej.
Jeżeli weźmiemy to pod uwagę możemy w łatwy sposób wykryć czy osoba, która do nas dzwoni jest w naszej książce adresowej.



Enter: Auto odpowiedź (20)
A1: Variable Set [ Name:%JEST To:0 Do Maths:Off Append:Off ] //Zmienna %JEST ustawiana jest na wartość 0. Zmienna ta mówi mi czy osoba dostała już powiadomienie w tej sesji - w tym spotkaniu
A2: Variable Set [ Name:%NUMER To:%CNUM Do Maths:Off Append:Off ] //Kopiowanie numeru osoby dzwoniącej do zmiennej %NUMER
A3: Variable Section [ Name:%NUMER From:1 Length:2 Adapt To Fit:Off Store Result In:%NUMER ] //Zmienna %NUMER zostaje skrócona do pierwszych cyfr. Po co? Po pierwszych cyfrach wykrywam czy to numer stacjonarny, czy komórkowy :)





A4: For [ Variable:%KIERUNKOWY Items:1:12 ] //W pętli FOR sprawdzam czy nasz numer jest numerem kierunkowym
A5: Variable Set [ Name:%index To:%index + 1 Do Maths:On Append:Off ]
A6: If [ %KIERUNKOWY(%index) = %NUMER ] //Zmienna %KIERUNKOWY jest pseudotablicą, która przechowuje możliwe "prefixy" numerów komórkowych
A7: For [ Variable:%TEL Items:%TEL(#) ] //Jeżeli jest to sprawdzam, czy już wysłaliśmy mu SMSa.
A8: Variable Set [ Name:%IND To:%IND + 1 Do Maths:Off Append:Off ]
A9: If [ %TEL(%IND) = %CNUM ]
A10: Variable Set [ Name:%JEST To:1 Do Maths:Off Append:Off ]
A11: End If
A12: End For
A13: If [ %JEST = 0 ] //Jeżeli nie dostał to wysyłam SMSa i dodaję jego numer do pseudotablicy %TEL.
A14: Send SMS [ Number:%CNUM Message:Nie moge teraz rozmawiac. Bede osiagalny dopiero po godzinie: [Tutaj mam zamiar wstawić godzinę zakończenia się wydarzenia, ewentualnie dodam sobie przypomnienie do kalendarza, które się wykona 5 minut po zakończeniu spotkania - przypomnienie o oddzwonieniu] Store In Messaging App:On ]
A15: Array Push [ Name:%TEL Position:1 Value:%CNUM Fill Spaces:Off ]
A16: End If
A17: End If
A18: End For




W momencie zakończenia się wydarzenia Spotkanie zostaje wyczyszczona zmienna %TEL.


Skrypt posiada takie zabezpieczenia jak:
  • Odpisywanie tylko osobom z książki adresowej;
  • Wysłanie tylko jednego SMSa do tej samej osoby w ciągu jednego wydarzenia;
  • Wysłanie SMSa tylko na numer komórkowy.




Czy ten skrypt jest poprawny? Tak i logika, jak i implementacja?
__________________
XMPP: andrzej(at)czerniak.info.pl

Ostatnio zmieniany przez andy : 20.10.2012 o godz. 12:17
andy jest offline   Odpowiedz cytując ten post

  #ads
CDRinfo.pl
Reklamowiec
 
 
 
Data rejestracji: 29.12.2008
Lokalizacja: Sieć globalna
Wiek: 31
Posty: 1227
 

CDRinfo.pl is online  
Stary 26.10.2012, 00:27   #2
pali
Թ
 
Avatar użytkownika pali
 
Data rejestracji: 13.02.2003
Posty: 3,066
pali wyróżnia się na forum <450 - 549 pkt>pali wyróżnia się na forum <450 - 549 pkt>pali wyróżnia się na forum <450 - 549 pkt>pali wyróżnia się na forum <450 - 549 pkt>pali wyróżnia się na forum <450 - 549 pkt>
andy, no różne są sposoby zapisywania algorytmu, nie każę Ci tu od razu schematu blokowego rysować, ale jakiś normalny pseudokod może? To powyżej jest niezbyt czytelne.

"Wstęp do algorytmiki" D. Knutha, polecam. Dokładnie już nie pamiętam jego wykładu, bo z 10 lat nie widziałem tej pozycji na oczy, no ale z pewnością coś tam ciekawego znajdziesz.

A znalazłeś może rozwiązanie na jednoznaczne zidentyfikowanie operatora?
Na fb polecałem te tablice, ale co zrobić gdy ktoś przeniósł numer do innego opa?
pali jest offline   Odpowiedz cytując ten post
Odpowiedz na post

Tagi
android, programowanie, tasker

Opcje związane z dyskusją
Tryby wyświetlania

Twoje uprawnienia:
Nie możesz rozpoczynać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz umieszczać załączników
Nie możesz edytować swoich postów

BB codeWłączone
EmotikonkiWłączone
Kody [IMG]Włączone
Kody HTML są Wyłączone

Teleport

Podobne dyskusje
Dyskusja Autor Forum Odpow. Ostatni Post
Sprawdzenie znajomości regulaminu podczas rejestracji. andy Propozycje, sugestie, błędy forum 41 20.11.2006 22:20
Archiwa - sprawdzenie czym zostały stworzone andy Off topic 4 03.05.2006 21:37
Sprawdzenie zawartości obrazu płyty. Pete Napędy optyczne CD 3 07.04.2002 16:47


Wszystkie czasy w strefie CET. Aktualna godzina: 16:34.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.