Störningsinformation
Hej!
Tidigare kunde man få ut dessa event direkt från ert API som har blivit ersatt:
EventMajor => "Avstängt"
EventMinor => "Stor påverkan"
EventGood => "Inga större störningar"
EventPlanned => "Inga större störningar" with boolean flag Planned = true.
Var hittar jag denna information nu?
Tidigare kunde man få ut dessa event direkt från ert API som har blivit ersatt:
EventMajor => "Avstängt"
EventMinor => "Stor påverkan"
EventGood => "Inga större störningar"
EventPlanned => "Inga större störningar" with boolean flag Planned = true.
Var hittar jag denna information nu?
Följ inlägget
1
följare
Du kan använda importance, influence och urgency för att komma fram till dessa nivåer.
SL multiplicerar dessa tre värden för att ta fram ett enda priority värde. Sen jämförs det antagligen med några gränsvärden för att bestämma en allvarlighetsgrad som visas på webbsidan. Det går att göra lika dant, och kan återskapas med lite testning.
Man vet tex att "Förseningar på som mest 10 minuter för Tvärbanan 30 på grund av bilköer. Förseningarna beräknas pågå till cirka kl 18:30." med en prioritet av 56 klassas som större (meddelanden från https://sl.se/reseplanering/trafiklaget?locationType=TRANSPORT_TYPE&name=Sp%C3%A5rvagn%2FLokalbana&transportType=TRAM går att leta upp i API:et), samtidigt som en inställd avgång med prioritet 35 inte klassas som större, så gränsen går nog någonstans mellan 40-50. Genom att hitta lite fler testvärden i det intervallet och att jämföra med sidan kan man återskapa exakt samma beteende.
Hälsningar,
Bert
Tack för snabbt svar. Misstänkte att det kunde vara dessa man skulle använda sig av för detta men då det står i fet stil: "only used to sort messages" så blev man lite fundersam =)
De specifika tröskelvärde som SL använder för att klassificera dessa nivåer, är det något man skulle kunna kan ta del av?
Inte helt säker men verkar som att 25 är gränsen mellan "Inga störningar" och "Inga allvarliga störningar"
API Response for METRO:
/:398 Priority Score: 6
/:398 API Response for BUS:
/:398 Priority Score: 35
/:398 API Response for TRAM:
/:398 Priority Score: 21
/:398 API Response for LOKALBANA:
/:398 Priority Score: 25
/:398 API Response for TRAIN:
/:398 Priority Score: 35
/:398 API Response for FERRY:
/:398 Mode: FERRY, No data available
Känns aningen tråkigt att behöva vänta på en allvarligare incident som behöver inträffa för att man ska kunna testa sig fram till det tröskelvärdet.
Kan det vara så att SL endast använder sig av de två första parametrarna då urgency_level verkar vara 1 på alla meddelanden? Multiplicerar man importance och influence så är det, det högsta talet jämfört med de andra mindre störningarna.
"priority": {
"importance_level": 7,
"influence_level": 7,
"urgency_level": 1
},
"message_variants": [
{
"header": "Inställd avgång",
"details": "AGA - Ropsten kl 15:09\nRopsten - Gåshaga brygga kl 15:22, 16:15, 17:07, 18:00, 18:52\nGåshaga brygga - Ropsten kl 15:50, 16:43, 17:35, 18:28 är inställd på grund av vagnbrist.",
"scope_alias": "Lidingöbanan 21",
"language": "sv"
}
Kan eventuellt behöva justeras något, men här är del av koden.
// Define transport modes, translations, and icons
$transport_modes = [
'METRO' => ['name' => 'Tunnelbana', 'icon' => 'subway', 'apiUrl' => 'https://deviations.integration.sl.se/v1/messages?future=false&transport_mode=METRO'],
'BUS' => ['name' => 'Buss', 'icon' => 'directions_bus', 'apiUrl' => 'https://deviations.integration.sl.se/v1/messages?future=false&transport_mode=BUS'],
'TRAM' => ['name' => 'Spårvagn', 'icon' => 'tram', 'apiUrl' => 'https://deviations.integration.sl.se/v1/messages?future=false&transport_mode=TRAM'],
......
// Function to calculate priority score and determine status
function calculate_priority_status($priority) {
$score = $priority->importance_level + $priority->influence_level + $priority->urgency_level;
// Log the calculated score to the console
echo "<script>console.log('Priority Score: $score');</script>";
if ($score >= 15) {
return 'EventMajor'; // Major event (Större störning)
} elseif ($score >= 10 && $score < 15) {
return 'EventMinor'; // Minor event (Inga större störningar)
} else {
return 'EventGood'; // No significant disruptions (Inga störningar)
}
}